C++ 贪吃蛇如何实现基本功能

   2024-10-08 5600
核心提示:下面是一个简单的C++代码示例,实现了贪吃蛇的基本功能,包括初始化游戏界面、控制蛇的移动、判定蛇是否吃到食物、游戏结束等功

下面是一个简单的C++代码示例,实现了贪吃蛇的基本功能,包括初始化游戏界面、控制蛇的移动、判定蛇是否吃到食物、游戏结束等功能。

#include <iostream>#include <conio.h>#include <ctime>#include <cstdlib>using namespace std;const int width = 20;const int height = 20;bool gameOver;int x, y, fruitX, fruitY, score;int tailX[100], tailY[100];int nTail;enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };eDirection dir;void Setup(){    gameOver = false;    dir = STOP;    x = width / 2;    y = height / 2;    fruitX = rand() % width;    fruitY = rand() % height;    score = 0;}void Draw(){    system("cls");    for (int i = 0; i < width + 2; i++)        cout << "#";    cout << endl;    for (int i = 0; i < height; i++)    {        for (int j = 0; j < width; j++)        {            if (j == 0)                cout << "#";            if (i == y && j == x)                cout << "O";            else if (i == fruitY && j == fruitX)                cout << "F";            else            {                bool print = false;                for (int k = 0; k < nTail; k++)                {                    if (tailX[k] == j && tailY[k] == i)                    {                        cout << "o";                        print = true;                    }                }                if (!print)                    cout << " ";            }            if (j == width - 1)                cout << "#";        }        cout << endl;    }    for (int i = 0; i < width + 2; i++)        cout << "#";    cout << endl;    cout << "Score: " << score << endl;}void Input(){    if (_kbhit())    {        switch (_getch())        {        case 'a':            dir = LEFT;            break;        case 'd':            dir = RIGHT;            break;        case 'w':            dir = UP;            break;        case 's':            dir = DOWN;            break;        case 'x':            gameOver = true;            break;        }    }}void Logic(){    int prevX = tailX[0];    int prevY = tailY[0];    int prev2X, prev2Y;    tailX[0] = x;    tailY[0] = y;    for (int i = 1; i < nTail; i++)    {        prev2X = tailX[i];        prev2Y = tailY[i];        tailX[i] = prevX;        tailY[i] = prevY;        prevX = prev2X;        prevY = prev2Y;    }    switch (dir)    {    case LEFT:        x--;        break;    case RIGHT:        x++;        break;    case UP:        y--;        break;    case DOWN:        y++;        break;    }    if (x >= width) x = 0; else if (x < 0) x = width - 1;    if (y >= height) y = 0; else if (y < 0) y = height - 1;    for (int i = 0; i < nTail; i++)    {        if (tailX[i] == x && tailY[i] == y)            gameOver = true;    }    if (x == fruitX && y == fruitY)    {        score += 10;        fruitX = rand() % width;        fruitY = rand() % height;        nTail++;    }}int main(){    Setup();    while (!gameOver)    {        Draw();        Input();        Logic();        // 控制游戏速度        for (int i = 0; i < 10000000; i++);    }    return 0;}

这段代码实现了一个简单的贪吃蛇游戏,玩家可以通过键盘控制蛇的移动方向,吃到食物后蛇的长度增加,当蛇碰到自己或者墙壁时游戏结束。游戏

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号