帮我写一个简单的能玩的贪吃蛇代码,要求用c语言表述
时间: 2024-09-23 15:13:42 浏览: 38
在C语言中创建一个简单的贪吃蛇游戏需要一些基本的游戏循环、图形处理和键盘输入处理。这里提供一个简化的控制台版本,不包含图形化界面。这个代码使用了结构体和数组来表示蛇的身体,以及全局变量来存储关键信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // 包含kbhit()函数
// 定义蛇的位置
typedef struct {
int x;
int y;
} SnakeCell;
// 初始化蛇和食物位置
void init(SnakeCell* snake, int* food) {
snake[0].x = 5; // 起始位置
snake[0].y = 5;
snake[1] = snake[0]; // 头部紧跟着身体
*food = {7, 7}; // 食物初始位置
}
int main() {
SnakeCell snake[10];
int food[2], score = 0;
bool gameRunning = true;
init(snake, food);
while (gameRunning) {
// 更新游戏状态
if (kbhit()) { // 检查是否有按键按下
switch (_getch()) {
case 'w': snake[0].y--; break;
case 'a': snake[0].x--; break;
case 's': snake[0].y++; break;
case 'd': snake[0].x++; break;
}
}
// 碰撞检测和更新
if (snake[0].x == food[0] && snake[0].y == food[1]) {
score++;
food[0] = rand() % 20 + 1; // 食物随机位置
snake[snakesize-1].x = snake[0].x;
snake[snakesize-1].y = snake[0].y;
} else {
snake[0] = snake[snakesize-1]; // 如果头部触碰其他部分,蛇死亡
}
// 控制蛇头移动到新位置
for (int i = snakesize - 2; i >= 0; i--) {
snake[i+1].x = snake[i].x;
snake[i+1].y = snake[i].y;
}
printf("\033[%d;%df", snake[0].y+1, snake[0].x+1); // 显示蛇
printf("Score: %d\n", score);
system("cls"); // 清屏
}
printf("Game Over!\n");
return 0;
}
```
阅读全文