贪吃蛇游戏代码c语言
时间: 2024-10-17 18:02:28 浏览: 41
贪吃蛇游戏是一个经典的控制台游戏,通常使用 C 语言编写。它的基本原理包括玩家控制蛇头移动、吃到食物增长身体长度以及避免撞墙或自吞。以下是简单的 C 语言版贪吃蛇代码概述:
```c
#include <stdio.h>
#include <conio.h> // 包含键盘输入处理函数
#define ROWS 20
#define COLS 40
#define SNAKE_SPEED 5
#define FOOD_SIZE 3
typedef struct {
int x;
int y;
} Point;
// 初始化蛇和食物的位置
void init_snake_food(Point* snake, Point* food) {
snake[0].x = COLS / 2 - 2; // 假设蛇初始长度为3
snake[0].y = ROWS / 2;
*food = (Point){ROWS / 2 + 1, COLS / 2};
}
// 游戏主循环
int main() {
Point snake[10], food;
init_snake_food(snake, &food);
while(1) {
// 检查键盘输入并更新蛇的位置
if (_kbhit()) { // 如果有按键按下
switch(_getch()) {
case 'a':
snake[0].x -= SNAKE_SPEED;
break;
case 'd':
snake[0].x += SNAKE_SPEED;
break;
case 'w':
snake[0].y -= SNAKE_SPEED;
break;
case 's':
snake[0].y += SNAKE_SPEED;
break;
}
}
// 检查边界和碰撞
if (snake[0].x < 0 || snake[0].x >= COLS || snake[0].y < 0 || snake[0].y >= ROWS ||
snake[0] == snake[1]) {
printf("Game Over!\n");
return 0;
}
// 移动蛇的身体,添加新头部位置,删除旧尾巴
for (int i = 9; i > 0; i--) {
snake[i] = snake[i - 1];
}
snake[9] = snake[0];
// 检查食物是否被吃掉,如果吃到了,生成新的食物并在蛇身之外
if (snake[0] == food) {
snake[1] = snake[0]; // 长大一格
init_food(&food);
}
}
return 0;
}
// 生成随机的食物位置
void init_food(Point* food) {
do {
*food = (Point){rand() % COLS, rand() % ROWS};
} while (containsSnake(food, snake)); // 防止食物落在蛇身上
}
// 判断某个点是否在蛇身上
int containsSnake(const Point* point, const Point snake[]) {
for (int i = 0; i < 10; i++) {
if (snake[i] == *point) {
return 1;
}
}
return 0;
}
```
这个代码只是一个基础版本,实际的完整游戏还需要处理更多的细节,如用户界面、游戏得分等。玩者需要理解数组操作、条件判断、随机数生成以及简单的游戏逻辑。
阅读全文