c++贪吃蛇代码怎么写

以下是一个简单的C++贪吃蛇游戏代码示例:#include #include #include using namespace std;bool gameOver;const int width = 20;const int height = 20;int x, y, fruitX, fruitY, score;int ta

以下是一个简单的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 eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
eDirection 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");
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':
gameOver = true;
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;
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)
{
score += 10;
fruitX = rand() % width;
fruitY = rand() % height;
nTail++;
}
}
int main()
{
Setup();
while (!gameOver)
{
Draw();
Input();
Logic();
Sleep(10);
}
return 0;
}

请注意,这只是一个简单的贪吃蛇游戏代码示例,可能存在一些功能性的不足和bug。您可以根据需要进一步完善和优化代码。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/914552.html

(0)
派派
上一篇 2024-03-06
下一篇 2024-03-06

相关推荐

  • c++ snprintf函数的用法是什么

    snprintf函数用于将格式化的数据写入字符串中,与sprintf函数类似,但是snprintf函数可以控制写入的最大字符数,避免发生缓冲区溢出的情况。其基本用法如下:int snprintf(char *str, size_t size, const char *format, …);其中,str是要写入的字符串的指针,size是最大写入字符数(包括结尾的’\0’),format是格式

    2024-03-30
    0
  • 如何建网址(怎样建网址)

    如何建网址,怎样建网址内容导航:如何创建网址如何建网站怎么建网站需要怎么做怎样建网址一、如何创建网址更多视频怎么创建网站pingjunzhi关注网站,是互联网时代个人尤其是企业必备的一种宣传媒介,交易平台,一种明信片,几乎所有中小企业都必备的东西。随着移动互联网的发展,网站的形式开始扩大,传统的是指的PC端(电脑端)的网站,现在还有手机端的网站。但是无论什么样的网站,下边几条都是必须进行。..

    2022-05-07
    0
  • c++编译出现乱码如何解决

    在C++编译过程中出现乱码通常是由于编译器的字符集设置不正确导致的。以下是一些解决方法:确保源文件的编码格式是正确的,最好使用UTF-8编码。在编译器中设置正确的字符集,例如在Visual Studio中可以通过在项目属性中设置“字符集”选项为“使用多字节字符集”。如果是在命令行下编译,可以尝试在命令行中添加”-fexec-charset=UTF-8″参数来设置编译器的字符集。检查源文件中是否存在

    2024-03-17
    0
  • 织梦如何实现bt下载(织梦资源网)

    织梦如何实现bt下载,织梦资源网内容导航:织梦系统中是否能实现文件下载功能,如果能,怎样如何制作磁力链接影视馆仙剑4的剧情是什么人物有哪些怎样使用bt下载一、织梦系统中是否能实现文件下载功能,如果能,怎样可以在文章中添加附件,如果需要付费下载可以添加新的字段即可需二次开发

    2022-05-13
    0
  • android多线程的实现方式有哪些

    Android中实现多线程的方式有以下几种:继承Thread类:通过继承Thread类,重写run()方法来实现多线程。然后创建该类的对象,并调用start()方法启动线程。实现Runnable接口:定义一个实现Runnable接口的类,实现该接口中的run()方法。然后创建Thread对象并将实现了Runnable接口的类的对象作为参数传入Thread的构造函数中,最后调用start()方法启动

    2024-01-23
    0
  • 如何组建网站(如何创建网站)

    如何组建网站,如何创建网站 内容导航: 网站搭建流程:如何搭建一个网站 如何组建网站 怎么样建立一个网站 如何建立自己的微网站 一、网站搭建流程:如何搭建一个网站 目前市面上有不少…

    2022-06-10
    0

发表回复

登录后才能评论