21xrx.com
2024-12-23 00:21:57 Monday
登录
文章检索 我的文章 写文章
50行最简单的C++语言贪吃蛇代码
2023-07-05 06:34:58 深夜i     --     --
C++ 贪吃蛇 代码 简单 50行

今天,我们将分享一份50行最简单的C++语言贪吃蛇代码。这个项目不仅适合那些正在学习C++语言的新手,也适合那些希望了解贪吃蛇游戏是如何实现的人。

在开始编写代码之前,我们需要了解一下贪吃蛇游戏的规则。贪吃蛇游戏是一款经典的街机游戏,玩家需要通过控制一条蛇的移动来吃掉地图中的所有食物。在游戏过程中,蛇的长度会不断增长,同时蛇会变得越来越快,玩家需要通过巧妙的操作来躲避障碍物和自己的尾巴。接下来,我们将介绍50行最简单的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 direction STOP = 0; // 枚举四个方向

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"); // 清屏

  cout << "---贪吃蛇游戏---" << endl << endl;

  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 << 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; // 按x键结束游戏

    

  }

}

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; 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) // 如果蛇头碰到食物,则得分+1,并生成新的食物

  {

    score += 10;

    fruitX = rand() % width;

    fruitY = rand() % height;

    nTail++;

  }

}

int main()

{

  Setup(); // 初始化

  while (!gameOver) // 游戏主循环

  {

    Draw(); // 绘制地图

    Input(); // 输入操作

    Logic(); // 游戏逻辑

    Sleep(100); // 控制游戏速度

  }

  return 0;

}

以上就是50行最简单的C++语言贪吃蛇代码,我们可以在控制台中直接运行它,体验经典的贪吃蛇游戏。总的来说,这份代码非常易于学习和使用,适合于任何想要了解贪吃蛇游戏实现过程的人。如果你是一名C++新手,那么这份代码可以让你掌握一些基本的编程知识和技能,帮助你更好地理解C++语言的工作原理。

  
  

评论区

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