21xrx.com
2024-12-22 20:53:51 Sunday
登录
文章检索 我的文章 写文章
C++贪吃蛇游戏代码
2023-07-02 12:44:46 深夜i     --     --
C++ 贪吃蛇游戏 代码 程序设计 前端界面

贪吃蛇游戏是一种经典的游戏,它曾经风靡一时,受到很多玩家的热爱。如果你对编程有一定的了解,那么使用C++编写贪吃蛇游戏代码也是非常有趣的事情。

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

#include

#include

#include

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 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 || y > height || y < 0)

  //  gameOver = true;

  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(50);

  }

  return 0;

}

在这个代码中,我们使用了Windows.h头文件,通过Sleep函数来控制运行速度。在绘制方格线条时,我们通过for循环嵌套实现。游戏运行正常,可以使用Wasd键控制蛇运动方向。在吃到食物后,会增加得分并产生新的食物。

当然,这个代码在游戏的可玩性、界面和音效等方面都有很大的提升空间。希望对你理解C++编程有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复