c++贪吃蛇代码怎么写

avatar
作者
猴君
阅读量:0

以下是一个简单的C++贪吃蛇游戏代码示例:

#include <iostream> #include <conio.h> #include <windows.h>  using namespace std;  bool gameOver; const int width = 20; const int height = 20; 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;     default:         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();         Sleep(10);     }      return 0; } 

请注意,这只是一个简单的贪吃蛇游戏代码示例,可能存在一些功能性的不足和bug。您可以根据需要进一步完善和优化代码。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!