用c语言写贪吃蛇代码
时间: 2024-09-21 13:01:31 浏览: 48
编写一个简单的贪吃蛇游戏的C语言代码涉及到基本的游戏逻辑、图形界面(如果是在控制台上)或窗口环境(如果是GUI),以及事件处理。这里提供一个控制台版本的基本框架,你可以根据需求扩展和完善:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 50 // 蛇的最大长度
#define UP_ARROW 'w'
#define DOWN_ARROW 's'
#define LEFT_ARROW 'a'
#define RIGHT_ARROW 'd'
typedef struct {
int x, y; // 蛇的位置
int dx, dy; // 移动方向
int length; // 蛇的长度
char food; // 食物的位置
} Snake;
Snake snake;
bool game_over = false;
void move_snake() {
if (snake.x + snake.dx >= 0 && snake.x + snake.dx < MAX_LEN &&
snake.y + snake.dy >= 0 && snake.y + snake.dy < MAX_LEN) {
if (snake.x == snake.food.x && snake.y == snake.food.y) {
snake.length++;
snake.food.x = rand() % MAX_LEN; // 食物随机生成位置
snake.food.y = rand() % MAX_LEN;
} else {
snake.x = snake.x + snake.dx;
snake.y = snake.y + snake.dy;
}
} else {
game_over = true;
}
}
// 显示蛇和食物
void draw_game() {
for (int i = 0; i < MAX_LEN; i++) {
if (i == snake.x) {
printf("O"); // 蛇的身体
} else {
printf("-"); // 地板
}
if (i == snake.food.x) {
printf("*"); // 食物
}
printf("\n");
}
printf("\n");
}
int main() {
srand(time(0)); // 设置随机数种子
snake.x = MAX_LEN / 2;
snake.y = MAX_LEN / 2;
snake.dx = 0;
snake.dy = -1;
snake.length = 1;
snake.food.x = rand() % MAX_LEN;
snake.food.y = rand() % MAX_LEN;
while (!game_over) {
draw_game();
scanf("%c", &snake.dx);
switch (snake.dx) {
case UP_ARROW:
snake.dy = -1;
break;
case DOWN_ARROW:
snake.dy = 1;
break;
case LEFT_ARROW:
snake.dx = -1;
break;
case RIGHT_ARROW:
snake.dx = 1;
break;
default:
printf("Invalid key input\n");
continue;
}
move_snake();
// 清除屏幕(这里假设使用的是Linux终端)
system("clear");
// 判断是否撞墙或者自己
if (snake.x == 0 || snake.x == MAX_LEN - 1 ||
snake.y == 0 || snake.y == MAX_LEN - 1) {
game_over = true;
} else if (snake.x == snake.food.x && snake.y == snake.food.y) {
// 如果吃到食物
}
}
return 0;
}
```
这个代码只是一个基础版本,实际游戏中还需要添加碰撞检测、键盘输入处理(可能需要非阻塞IO)、循环更新游戏状态等细节。要运行这个游戏,你需要一个支持清屏和键盘输入的环境(如Linux终端或Windows命令提示符)。如果你想在窗口环境中开发,你可能需要学习如何使用像SDL或SFML这样的库。
阅读全文