用c语言编辑最简单的贪吃蛇小游戏
时间: 2023-08-09 20:11:45 浏览: 89
用c语言编写的贪吃蛇小游戏
好的,下面给出一个简单的贪吃蛇小游戏的 C 语言代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define ROW 15 // 地图行数
#define COL 20 // 地图列数
// 定义方向
#define UP 1
#define DOWN 2
#define LEFT 3
#define RIGHT 4
int map[ROW][COL]; // 地图
int snake[ROW * COL][2]; // 蛇身
int fx, fy; // 食物坐标
int len; // 蛇长度
int dir; // 当前方向
// 初始化地图
void init_map(void)
{
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (i == 0 || j == 0 || i == ROW - 1 || j == COL - 1) {
map[i][j] = 1;
} else {
map[i][j] = 0;
}
}
}
}
// 初始化蛇
void init_snake(void)
{
len = 3;
dir = RIGHT;
snake[0][0] = ROW / 2;
snake[0][1] = COL / 2 - 1;
snake[1][0] = ROW / 2;
snake[1][1] = COL / 2;
snake[2][0] = ROW / 2;
snake[2][1] = COL / 2 + 1;
}
// 画地图
void draw_map(void)
{
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (map[i][j] == 1) {
printf("#");
} else if (map[i][j] == 2) {
printf("*");
} else if (map[i][j] == 3) {
printf("O");
} else {
printf(" ");
}
}
printf("\n");
}
}
// 画蛇
void draw_snake(void)
{
int i;
for (i = 0; i < len; i++) {
map[snake[i][0]][snake[i][1]] = 3;
}
}
// 生成食物
void gen_food(void)
{
srand((unsigned)time(NULL));
do {
fx = rand() % (ROW - 2) + 1;
fy = rand() % (COL - 2) + 1;
} while (map[fx][fy] != 0);
map[fx][fy] = 2;
}
// 移动蛇
void move_snake(void)
{
int i;
for (i = len - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
switch (dir) {
case UP:
snake[0][0]--;
break;
case DOWN:
snake[0][0]++;
break;
case LEFT:
snake[0][1]--;
break;
case RIGHT:
snake[0][1]++;
break;
}
}
// 判断游戏是否结束
int is_game_over(void)
{
int i;
if (map[snake[0][0]][snake[0][1]] == 1) {
return 1;
}
for (i = 1; i < len; i++) {
if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) {
return 1;
}
}
return 0;
}
// 判断是否吃到食物
int is_eat_food(void)
{
if (snake[0][0] == fx && snake[0][1] == fy) {
return 1;
}
return 0;
}
// 游戏主循环
void game_loop(void)
{
while (1) {
system("cls"); // 清屏
draw_map(); // 画地图
draw_snake(); // 画蛇
gen_food(); // 生成食物
if (kbhit()) { // 检测键盘输入
switch (getch()) {
case 'w':
case 'W':
if (dir != DOWN) {
dir = UP;
}
break;
case 's':
case 'S':
if (dir != UP) {
dir = DOWN;
}
break;
case 'a':
case 'A':
if (dir != RIGHT) {
dir = LEFT;
}
break;
case 'd':
case 'D':
if (dir != LEFT) {
dir = RIGHT;
}
break;
}
}
move_snake(); // 移动蛇
if (is_game_over()) { // 判断游戏是否结束
printf("Game over!\n");
break;
}
if (is_eat_food()) { // 判断是否吃到食物
len++;
}
Sleep(200); // 延时
}
}
int main(void)
{
init_map(); // 初始化地图
init_snake(); // 初始化蛇
game_loop(); // 游戏主循环
return 0;
}
```
注意:上述代码中使用了一些 Windows 系统下的头文件和函数,如果在其他系统下可能需要做出相应的修改。
阅读全文