21xrx.com
2024-12-27 05:16:16 Friday
登录
文章检索 我的文章 写文章
C++代码:贪吃蛇游戏
2023-07-04 03:52:53 深夜i     --     --
C++ 代码 贪吃蛇 游戏 编程

贪吃蛇游戏是一款经典的小游戏,它以简单的操作和有趣的玩法受到了广大玩家的喜爱。在这篇文章中,我们将向大家介绍一个基于C++的贪吃蛇游戏的代码。

首先,我们需要了解贪吃蛇游戏的基本规则。在游戏中,有一条蛇和一些食物。玩家需要通过控制蛇的移动来吃掉尽可能多的食物,同时避免蛇碰到自己的身体或者游戏界面的边缘。当蛇吃到食物时,身体会加一格。当蛇碰到自己的身体或者边缘时,游戏结束。

接下来,我们就可以开始写出贪吃蛇游戏的代码了。其中,需要用到的C++语言基础知识包括数组、函数、随机数生成等等。下面是代码的主要部分:


#include<iostream>

#include<conio.h>

#include<time.h>

using namespace std;

int width = 20; //游戏窗口宽度

int height = 20; //游戏窗口高度

int x, y; //蛇头的位置

int fruitX, fruitY; //食物的位置

int score; //分数

int tailX[100], tailY[100]; //蛇身体的位置

int nTail; //蛇身体的长度

enum Direction LEFT; //枚举蛇的方向

Direction dir; //蛇的方向

//初始化游戏的函数

void Setup()

{

  dir = STOP; //刚开始时蛇不动

  x = width / 2; //蛇头的初始位置在窗口中心

  y = height / 2;

  fruitX = rand() % width; //随机生成食物的位置

  fruitY = rand() % height;

  score = 0; //分数初始为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 Move()

{

  //记录蛇身体的位置

  int prevX = tailX[0];

  int prevY = tailY[0];

  int tempX, tempY;

  tailX[0] = x;

  tailY[0] = y;

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

  {

    tempX = tailX[i];

    tempY = tailY[i];

    tailX[i] = prevX;

    tailY[i] = prevY;

    prevX = tempX;

    prevY = tempY;

  }

  //移动蛇头

  switch (dir)

  {

  case LEFT:

    x--;

    break;

  case RIGHT:

    x++;

    break;

  case UP:

    y--;

    break;

  case DOWN:

    y++;

    break;

  }

}

//碰撞检测的函数

void Collision()

{

  //检测是否撞到边缘

  if (x >= width) x = 0; else if (x < 0) x = width - 1;

  if (y >= height) y = 0; else if (y < 0) y = height - 1;

  //检测是否吃到食物

  if (x == fruitX && y == fruitY)

  {

    score += 10; //分数加10

    fruitX = rand() % width; //随机生成新的食物位置

    fruitY = rand() % height;

    nTail++; //身体长度加1

  }

  //检测是否碰到自己的身体

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

  {

    if (tailX[i] == x && tailY[i] == y)

      dir = STOP; //停止移动

  }

}

//主函数

int main()

{

  Setup();

  while (dir != STOP)

  {

    Draw();

    Input();

    Move();

    Collision();

    _sleep(50); //控制每次移动的时间间隔

  }

  return 0;

}

以上就是一个基于C++的贪吃蛇游戏的代码。通过阅读这个代码,可以更好地理解贪吃蛇游戏的实现原理,并加深对C++语言的应用能力。如果你有兴趣,也可以根据这个代码来进行扩展和创新,开发出更加有趣的贪吃蛇游戏。

  
  
下一篇: 将C++转换为Java

评论区

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