21xrx.com
2024-09-19 09:34:05 Thursday
登录
文章检索 我的文章 写文章
C++贪吃蛇代码完整版
2023-07-06 11:44:06 深夜i     --     --
C++ 贪吃蛇 代码 完整版 游戏

贪吃蛇作为经典的游戏,是许多人童年时的回忆。如果你想体验一下在电脑上玩贪吃蛇的感觉,那么今天给大家介绍一份完整版的C++贪吃蛇代码。

1.引入头文件

首先我们需要引入一些必要的头文件:

#include

#include

#include

其中,iostream头文件提供了输入和输出流的功能;conio.h头文件提供了输入输出的一些函数及常量;windows.h头文件提供了控制光标位置、改变文字颜色等功能。

2.定义常量

接下来我们需要定义一些常量,这些常量用于表示地图大小、蛇的长度、食物的位置等。

const int width = 20;

const int height = 20;

int snakeX[100], snakeY[100];

int len = 3;

int score = 0;

bool over = false;

int foodX, foodY;

3.初始化地图

在程序开始时,我们需要初始化地图。在屏幕上打印一个矩形作为地图,同时打印出蛇和食物。

void Initialize()

{

  over = false;

  snakeX[0] = 5;

  snakeY[0] = 5;

  foodX = rand() % width;

  foodY = rand() % height;

  score = 0;

}

void Print()

{

  system("cls");

  for (int i = 0; i < width + 2; i++)

    std::cout << "#";

  std::cout << std::endl;

  for (int i = 0; i < height; i++)

  {

    for (int j = 0; j < width; j++)

    {

      if (j == 0)

        std::cout << "#";

      if (i == snakeY[0] && j == snakeX[0])

        std::cout << "O";

      else if (i == foodY && j == foodX)

        std::cout << "F";

      else

      {

        bool print = false;

        for (int k = 1; k < len; k++)

        {

          if (snakeX[k] == j && snakeY[k] == i)

            std::cout << "o";

            print = true;

        }

        if (!print)

          std::cout << " ";

      }

      if (j == width - 1)

        std::cout << "#";

    }

    std::cout << std::endl;

  }

  for (int i = 0; i < width + 2; i++)

    std::cout << "#";

  std::cout << std::endl;

  std::cout << "Score:" << score << std::endl;

}

4.检测输入

通过检测输入,判断蛇的前进方向。这里用到了getch()函数,每当用户按下一个键时,getch()函数就可以将这个键的表示返回。如果返回的值是方向键,就可以判断蛇需要前进的方向。

void Input()

{

  if (_kbhit())

  {

    switch (_getch())

    case 'a':

      direction = Left;

      break;

    case 'd':

      direction = Right;

      break;

    case 'w':

      direction = Up;

      break;

    case 's':

      direction = Down;

      break;

    case 'q':

      over = true;

      break;

  }

}

5.更新游戏状态

每当蛇运动时,需要检测蛇是否吃到了食物,是否撞墙或咬到了自己。如果吃到了食物,就需要将蛇的长度加一。

void Update()

{

  int preX = snakeX[0];

  int preY = snakeY[0];

  int pre2X, pre2Y;

  snakeX[0] = snakeX[0] + dx[direction];

  snakeY[0] = snakeY[0] + dy[direction];

  for (int i = 1; i < len; i++)

  {

    pre2X = snakeX[i];

    pre2Y = snakeY[i];

    snakeX[i] = preX;

    snakeY[i] = preY;

    preX = pre2X;

    preY = pre2Y;

  }

  if (snakeX[0] == foodX && snakeY[0] == foodY)

  {

    len++;

    score++;

    foodX = rand() % width;

    foodY = rand() % height;

  }

  if (snakeX[0] < 0 || snakeX[0] >= width || snakeY[0] < 0 || snakeY[0] >= height)

    over = true;

  for (int i = 1; i < len; i++)

  {

    if (snakeX[i] == snakeX[0] && snakeY[i] == snakeY[0])

      over = true;

  }

}

6.主函数

最后,我们需要用一个无限循环不断更新游戏状态,检测键盘输入,更新屏幕状态。

int main()

{

  Initialize();

  while (!over)

  {

    Print();

    Input();

    Update();

    Sleep(100);

  }

  return 0;

}

以上就是完整的C++贪吃蛇代码。如果你也想尝试写一个小游戏,建议从一个简单的游戏开始做起,一步步加强学习。祝大家编程愉快!

  
  

评论区

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