21xrx.com
2024-11-10 00:19:07 Sunday
登录
文章检索 我的文章 写文章
C++编写贪吃蛇代码
2023-07-09 04:27:29 深夜i     --     --
C++ 编写 贪吃蛇 代码 游戏

贪吃蛇是一款经典的游戏,在游戏中,玩家控制一条蛇去吃食物,每吃到一块食物蛇就会变长,并且速度会加快。如果蛇撞到墙壁或者撞到自身,则游戏结束。在游戏中需要设计出一些数据结构来实现蛇的移动以及食物的生成,还需要设计出一些算法来处理撞墙或者撞自身的情况。下面是使用C++编写贪吃蛇的代码:

#include

#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 Direction UP;

Direction 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 tempX, tempY;

  tailX[0] = x;

  tailY[0] = y;

  for (int i = 1; i < nTail; i++) {

    tempX = tailX[i];

    tempY = tailY[i];

    tailX[i] = prevX;

    tailY[i] = prevY;

    prevX = tempX;

    prevY = tempY;

  }

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

  }

  return 0;

}

上述是关于使用C++编写贪吃蛇游戏的代码,其中主要包含了游戏初始化、界面绘制、玩家输入、游戏逻辑等一系列操作。我们可以通过控制台进行测试,通过输入wasd来控制蛇的移动,当蛇撞到墙壁或者自身时,游戏即结束,最后输出游戏总得分。除此之外,我们还需要随机生成食物,实时更新蛇的长度,这些都需要在程序中进行处理。总之,贪吃蛇是一个经典的游戏,可以让我们更好地理解数据结构和算法的运用,同时也可以锻炼我们的编程能力。

  
  

评论区

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