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语言数组合并的方法有哪些

    C语言数组合并的方法有以下几种: 使用循环:首先创建一个新的数组,然后使用循环将两个数组的元素依次复制到新数组中。 int mergeArrays(int arr1[], int arr2[...

  • C语言字符数组和字符串的区别是什么

    C语言中,字符数组和字符串是有区别的。 字符数组是一种数据类型,用于存储字符类型的数据。它是由一组连续的字符元素组成的,每个元素都可以存储一个字符。字符...

  • c语言lseek函数的用法是什么

    lseek函数用于在文件中设置文件指针的位置。它的原型为:
    off_t lseek(int fd, off_t offset, int whence); 参数说明: fd:文件描述符,表示要操作的文件。...

  • C语言container_of宏的作用是什么

    C语言中的container_of宏的作用是根据结构体中某个成员的指针来获取整个结构体的指针。它的定义如下:
    #define container_of(ptr, type, member) \
    ((...

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