21xrx.com
2025-06-09 07:20:36 Monday
登录
文章检索 我的文章 写文章
"使用C++编写贪吃蛇游戏代码"
2023-07-06 04:34:09 深夜i     17     0
C++ 贪吃蛇 游戏 编写 代码

在计算机程序设计领域,贪吃蛇游戏是一个非常经典的游戏,经常被用来作为编程初学者的练手项目。这个游戏的目标是控制一条小蛇,在屏幕上不断移动,并吃掉出现在屏幕上的食物。每当蛇吃掉一块食物时,它就会变长一段。然而,如果蛇碰到了屏幕边缘或者自己的尾巴,那么游戏就会结束。

为了实现这个游戏,我们可以使用C++语言进行编写。以下是一个简单的贪吃蛇游戏代码示例:

#include <iostream>
#include <conio.h>
using namespace std;
const int width = 20;
const int height = 20;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
enum eDirection RIGHT;
eDirection dir;
void Setup()
{
  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':
      exit(0);
      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;
  default:
    break;
  }
  if (x > width || x < 0 || y > height || y < 0)
    exit(0);
  for (int i = 0; i < nTail; i++)
    if (tailX[i] == x && tailY[i] == y)
      exit(0);
  if (x == fruitX && y == fruitY)
  {
    score += 10;
    fruitX = rand() % width;
    fruitY = rand() % height;
    nTail++;
  }
}
int main()
{
  Setup();
  while (1)
  {
    Draw();
    Input();
    Logic();
  }
  return 0;
}

在这个示例代码中,我们定义了一个宽度为20,高度为20的游戏画面,通过使用枚举类型eDirection来表示贪吃蛇的运动方向,并定义了一个Setup函数来初始化游戏参数。在主函数中,我们则通过不断的绘制画面、接收用户输入以及计算游戏逻辑来实现一个简单的贪吃蛇游戏。

当然,如果你想要让这个游戏更加完善,你还可以为它添加更多的功能,比如分数排行榜、游戏音效等等。但总的来说,C++语言是一个非常适合编写贪吃蛇游戏的编程语言,希望以上的代码示例能够为你编写自己的贪吃蛇游戏提供一些帮助。

  
  

评论区