21xrx.com
2025-03-28 14:10:05 Friday
文章检索 我的文章 写文章
C++贪吃蛇游戏的最简单代码实现
2023-06-30 20:53:58 深夜i     11     0
C++ 贪吃蛇游戏 最简单代码实现

贪吃蛇是一款老少皆宜的经典游戏,它的编程实现也是程序员学习的入门经典案例之一。这篇文章将会介绍C++语言实现最简单的贪吃蛇游戏代码。

首先,我们需要明确游戏的基本规则:贪吃蛇每次移动一格,如果吃到了食物,就会变得更长;如果撞到了墙壁或者自己的身体,就会游戏结束。在代码实现中,我们需要定义蛇的方向、长度、身体坐标、食物坐标等变量。

接下来,我们编写一个循环,让贪吃蛇一直运行。每次循环中,我们需要判断蛇是否撞墙或者撞到了自己的身体,如果是,就结束游戏。如果没有撞到,蛇就继续移动,并判断是否吃到了食物。如果吃到了,就将长度加1,并生成新的食物。

具体的代码实现如下:

#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
const int N = 20;
const int M = 50;
int map[N][M];
int snake[100][2];
int len = 3, fx = 1, fy = 0;
int foodx, foody;
void init()
{
  for (int i = 0; i < N; i++)
  {
    for (int j = 0; j < M; j++)
    {
      if (i == 0 || j == 0 || i == N - 1 || j == M - 1)
        map[i][j] = -1; // 边界
      else
        map[i][j] = 0; // 其他
    }
  }
  srand((unsigned)time(NULL)); // 设置随机数种子
  foodx = rand() % (N - 2) + 1; // 食物位置随机
  foody = rand() % (M - 2) + 1;
  map[foodx][foody] = 1; // 食物
}
void show()
{
  for (int i = 0; i < N; i++)
  {
    for (int j = 0; j < M; j++)
    {
      if (map[i][j] == -1)
        cout << "#";
      else if (map[i][j] == 0)
        cout << " ";
      else if (map[i][j] == 1)
        cout << "@";
      else if (map[i][j] == 2)
        cout << "*";
    }
    cout << endl;
  }
}
void change()
{
  for (int i = len - 1; i > 0; i--)
  {
    snake[i][0] = snake[i - 1][0];
    snake[i][1] = snake[i - 1][1];
  }
  snake[0][0] += fx;
  snake[0][1] += fy;
}
void move()
{
  int x = snake[0][0] + fx;
  int y = snake[0][1] + fy;
  if (map[x][y] == -1 || map[x][y] == 2)
  {
    cout << "Game over!" << endl;
    exit(0);
  }
  change();
  if (map[x][y] == 1)
  {
    len++;
    srand((unsigned)time(NULL));
    foodx = rand() % (N - 2) + 1;
    foody = rand() % (M - 2) + 1;
    map[foodx][foody] = 1;
  }
  snake[0][0] = x;
  snake[0][1] = y;
  map[x][y] = 2;
}
void input()
{
  if (_kbhit())
  {
    switch (_getch())
     fy = 1; break;
    
  }
}
int main()
{
  init();
  while (1)
  {
    system("cls");
    show();
    input();
    move();
  }
  return 0;
}

在上述代码中,我们使用了 `#` 表示边界、空格表示空白区域、`@` 表示食物、`*` 表示蛇的身体。我们可以使用 `system("cls");` 清空屏幕,然后使用 `show()` 函数来打印地图。`input()` 函数用于获取玩家的输入,改变蛇的方向,`move()` 函数用于更新蛇的位置。

通过上述代码实现,我们可以动手实现自己的贪吃蛇游戏,同时也可以加入一些自己的创意,例如添加障碍物,增加难度等等,让游戏变得更加有趣。

  
  

评论区

    相似文章
请求出错了