117.info
人生若只如初见

C语言贪吃蛇代码怎么写

下面是一个简单的C语言贪吃蛇的代码示例:

#include 
#include 
#include 
#include 
#define WIDTH 20
#define HEIGHT 20
int snakeX[100], snakeY[100];  // 蛇身的位置
int snakeLength;  // 蛇身长度
int fruitX, fruitY;  // 水果的位置
enum eDirecton { STOP = 0, LEFT, RIGHT, UP, DOWN };  // 方向枚举
enum eDirecton dir;  // 当前移动方向
// 初始化游戏
void Setup()
{
dir = STOP;
snakeX[0] = WIDTH / 2;
snakeY[0] = HEIGHT / 2;
snakeLength = 1;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
}
// 画出当前游戏状态
void Draw()
{
system("cls");
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
if (j == 0)
printf("#");
if (i == snakeY[0] && j == snakeX[0])
printf("O");  // 蛇头
else if (i == fruitY && j == fruitX)
printf("F");  // 水果
else
{
int snakeBody = 0;
for (int k = 1; k < snakeLength; k++)
{
if (snakeY[k] == i && snakeX[k] == j)
{
printf("o");  // 蛇身
snakeBody = 1;
}
}
if (!snakeBody)
printf(" ");
}
if (j == WIDTH - 1)
printf("#");
}
printf("\n");
}
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
}
// 处理输入
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 = snakeX[0];
int prevY = snakeY[0];
int prev2X, prev2Y;
snakeX[0] += dir == RIGHT ? 1 : dir == LEFT ? -1 : 0;
snakeY[0] += dir == DOWN ? 1 : dir == UP ? -1 : 0;
if (snakeX[0] >= WIDTH) snakeX[0] = 0; else if (snakeX[0] < 0) snakeX[0] = WIDTH - 1;
if (snakeY[0] >= HEIGHT) snakeY[0] = 0; else if (snakeY[0] < 0) snakeY[0] = HEIGHT - 1;
for (int i = 1; i < snakeLength; i++)
{
prev2X = snakeX[i];
prev2Y = snakeY[i];
snakeX[i] = prevX;
snakeY[i] = prevY;
prevX = prev2X;
prevY = prev2Y;
}
if (snakeX[0] == fruitX && snakeY[0] == fruitY)
{
snakeLength++;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
}
}
int main()
{
Setup();
while (1)
{
Draw();
Input();
Logic();
Sleep(10);  // 控制游戏速度
}
return 0;
}

这是一个简单的贪吃蛇游戏,使用了Windows API中的conio.h和windows.h库来实现控制台界面和按键监听。游戏中使用箭头键来控制蛇的移动方向,吃到水果后蛇的长度会增加。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe4f7AzsLCQVSB1I.html

推荐文章

  • c语言goto用法是什么

    在C语言中,goto语句用于从一个位置跳转到另一个位置。它可以用于跳出循环、条件语句或者函数。goto语句的语法如下:
    goto label;
    ...
    label: //...

  • goto在c语言中的运用方法是什么

    goto 语句在 C 语言中允许程序从一个位置跳转到另一个位置。然而,在实际编程中,过度使用 goto 语句通常被认为是一种不好的编程实践,因为它可能导致代码结构混...

  • c语言堆和栈的区别是什么

    C语言中的堆和栈是两种不同的内存分配方式。 栈(Stack):栈是由编译器自动分配和释放的内存区域,用于存储局部变量和函数调用的上下文信息。栈的特点是先进后出...

  • C语言结构体数组怎么定义和使用

    在C语言中,可以通过定义结构体数组来存储多个具有相同数据类型的结构体对象。下面是定义和使用结构体数组的示例代码:
    #include // 定义一个结构体类型

  • C#中managementobjectsearcher的用法是什么

    在C#中,ManagementObjectSearcher类用于执行WMI(Windows Management Instrumentation)查询,并返回与查询条件匹配的WMI对象的集合。
    它的常用用法如下:...

  • js中e.preventdefault的作用是什么

    在JavaScript中,e.preventDefault()是一个事件处理函数,用于阻止事件的默认行为。
    当一个事件触发时,浏览器会执行默认的操作。例如,当用户点击一个链接...

  • matlab画三维图的方法有哪些

    在Matlab中,可以使用以下几种方法来绘制三维图形: plot3函数:可以绘制三维的线图。例如,plot3(x, y, z)可以绘制以x、y和z为坐标的三维线图。 scatter3函数:...

  • c语言贪吃蛇代码编写要注意什么

    在编写C语言的贪吃蛇代码时,需要注意以下几点: 界面设计:合理设计游戏界面,包括蛇、食物、边界等元素的显示和位置,使其易于操作和识别。 蛇的移动:编写蛇的...