帮我用c语言写一段贪吃蛇的代码
时间: 2024-12-14 11:27:33 浏览: 4
C语言贪吃蛇大作战源代码,C语言期末作业
5星 · 资源好评率100%
在C语言中编写一个简单的贪吃蛇游戏需要一些基本的游戏结构,如控制蛇的移动、食物生成以及碰撞检测等。由于这是个较为复杂的任务,下面是一个简化的版本,它展示了如何创建一个基础框架,真正的完整游戏会更庞大。
```c
#include <stdio.h>
#include <stdlib.h>
#define COLS 20 // 宽度
#define ROWS 20 // 高度
#define SNAKE_SPEED 5
typedef enum { EMPTY = 0, FOOD = '#', HEAD = 'O',蛇体='.'} cell_t;
cell_t grid[ROWS][COLS];
int snake_x[3], snake_y[3]; // 蛇的位置
int direction; // 上下左右,初始设置为上
void print_grid() {
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
printf("%c ", grid[i][j]);
}
printf("\n");
}
}
// 更新蛇的位置
void move_snake() {
int next_head_x = snake_x[direction] + (snake_x[1] - snake_x[0]);
int next_head_y = snake_y[direction] + (snake_y[1] - snake_y[0]);
if (next_head_x >= 0 && next_head_x < COLS &&
next_head_y >= 0 && next_head_y < ROWS &&
grid[next_head_y][next_head_x] != FOOD) {
grid[snake_y[2]][snake_x[2]] = EMPTY;
snake_x[0] = snake_x[1];
snake_y[0] = snake_y[1];
snake_x[1] = next_head_x;
snake_y[1] = next_head_y;
grid[next_head_y][next_head_x] = HEAD;
}
}
// 检查是否吃到食物
bool eat_food(int x, int y) {
return x >= 0 && x < COLS && y >= 0 && y < ROWS && grid[y][x] == FOOD;
}
int main() {
// 初始化网格和蛇
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
grid[i][j] = EMPTY;
}
}
snake_x[0] = COLS / 2; // 起始位置
snake_y[0] = ROWS / 2;
snake_x[1] = snake_x[0] - 1;
snake_y[1] = snake_y[0];
while (true) {
print_grid();
// 选择方向
char input;
scanf(" %c", &input);
switch (input) {
case 'w': direction = 1; break; // 上
case 'a': direction = 3; break; // 左
case 's': direction = 2; break; // 下
case 'd': direction = 0; break; // 右
}
// 移动蛇并检查是否有食物
move_snake();
if (eat_food(snake_x[1], snake_y[1])) {
snake_x[2] = snake_x[1];
snake_y[2] = snake_y[1];
grid[snake_y[0]][snake_x[0]] = HEAD; // 吃到食物,蛇头向前移
food_location = rand() % COLS * ROWS; // 再次随机放置食物
} else if (grid[snake_y[1]][snake_x[1]] == HEAD) {
printf("Game Over!\n");
return 0;
}
}
return 0;
}
```
这只是一个非常基础的贪吃蛇游戏示例,实际游戏中还需要处理更多的边界条件、输入验证和用户交互细节。如果你想详细了解如何构建完整的贪吃蛇游戏,可以查阅相关的教程或书籍,因为这个主题涉及的内容较多。
阅读全文