21xrx.com
2025-03-27 02:14:15 Thursday
文章检索 我的文章 写文章
50行最简单的C++贪吃蛇代码
2023-07-05 06:37:43 深夜i     14     0
C++ 贪吃蛇 代码 简单 50行

本文将介绍一份最简单的C++贪吃蛇代码,该代码仅使用了50行C++代码。这份代码主要包括了基本的游戏逻辑、界面绘制和按键控制功能。通过这份代码,初学者可以了解到贪吃蛇游戏的基本原理和C++语言的基本语法。

在编写贪吃蛇代码之前,我们需要先了解一下贪吃蛇游戏的规则。游戏中,玩家需要通过控制蛇的移动方向来获取食物,并将蛇的身体逐渐延长。如果蛇头碰到了边缘或者自己的身体,游戏就结束了。

首先,我们需要在代码中定义贪吃蛇和食物的坐标变量。在本代码中,我们使用了一个二维数组来存储游戏地图。在游戏开始时,我们需要初始化地图和蛇的位置。初始化完成后,我们可以通过循环不断更新蛇的位置和判断游戏结束条件。

在游戏中,玩家通过按键控制蛇的行动方向。为了实现这个功能,我们需要监听键盘输入,并根据不同的按键进行相应的操作。这个过程可以通过C++的输入输出库完成。

最后,我们需要在屏幕上绘制游戏界面。本代码使用了Windows命令行界面,通过调用Windows API中的控制台函数进行界面绘制。注释部分为代码注释:

#include <iostream>
#include <conio.h>
#include <windows.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 DOWN ;
eDirection dir;
void Setup()
{
  srand(time(NULL));
  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':
      dir = STOP;
      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)
    dir = STOP;
  for (int i = 0; i < ntail; i++)
    if (tailX[i] == x && tailY[i] == y)
      dir = STOP;
  if (x == fruitX && y == fruitY)
  {
    score += 10;
    fruitX = rand() % width;
    fruitY = rand() % height;
    ntail++;
  }
}
int main()
{
  Setup();
  while (dir != STOP)
  {
    Draw();
    Input();
    Logic();
    Sleep(100);
  }
  return 0;
}

通过以上五十行代码,我们就完成了一个简单的贪吃蛇游戏。在这个基础上,我们可以继续进行扩展,增加更多的游戏功能和优化效果,让玩家体验更加畅快的游戏体验。

  
  

评论区