用C语言编写一个贪吃蛇代码
时间: 2023-08-22 21:09:01 浏览: 148
以下是一个简单的贪吃蛇游戏的 C 代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
#define WIDTH 30 // 地图宽度
#define HEIGHT 20 // 地图高度
int map[WIDTH][HEIGHT]; // 地图
int x, y; // 蛇头坐标
int fx, fy; // 食物坐标
int score; // 得分
int speed; // 速度
int length; // 蛇的长度
int dir; // 移动方向
void init(); // 初始化
void draw(); // 绘制地图
void create_food(); // 生成食物
void move_snake(); // 移动蛇
void gameover(); // 游戏结束
void update_speed(); // 更新速度
void update_score(); // 更新得分
int main() {
init();
while (1) {
draw();
move_snake();
Sleep(speed);
}
return 0;
}
void init() {
int i, j;
srand(time(NULL));
x = WIDTH / 2;
y = HEIGHT / 2;
map[x][y] = 1;
length = 1;
dir = 75;
score = 0;
speed = 200;
for (i = 0; i < WIDTH; i++) {
for (j = 0; j < HEIGHT; j++) {
if (i == 0 || j == 0 || i == WIDTH - 1 || j == HEIGHT - 1)
map[i][j] = -1;
else
map[i][j] = 0;
}
}
create_food();
}
void draw() {
int i, j;
system("cls");
for (i = 0; i < WIDTH; i++) {
for (j = 0; j < HEIGHT; j++) {
if (map[i][j] == 0)
printf(" ");
else if (map[i][j] == 1)
printf("@");
else if (map[i][j] == -1)
printf("#");
else if (map[i][j] == 2)
printf("*");
}
printf("\n");
}
printf("Score: %d\n", score);
printf("Length: %d\n", length);
}
void create_food() {
do {
fx = rand() % (WIDTH - 2) + 1;
fy = rand() % (HEIGHT - 2) + 1;
} while (map[fx][fy] != 0);
map[fx][fy] = 2;
}
void move_snake() {
int i, j;
int nx = x, ny = y;
if (_kbhit()) {
dir = _getch();
}
if (dir == 72)
ny--;
else if (dir == 80)
ny++;
else if (dir == 75)
nx--;
else if (dir == 77)
nx++;
if (map[nx][ny] == -1)
gameover();
if (map[nx][ny] == 2) {
length++;
score += 10;
update_speed();
create_food();
}
map[x][y] = 1;
for (i = 0; i < WIDTH; i++) {
for (j = 0; j < HEIGHT; j++) {
if (map[i][j] > 0)
map[i][j]++;
if (map[i][j] == length + 1)
map[i][j] = 0;
}
}
x = nx;
y = ny;
}
void gameover() {
printf("Game Over!\n");
printf("Your Score: %d\n", score);
system("pause");
exit(0);
}
void update_speed() {
if (score >= 100 && score < 200)
speed = 150;
else if (score >= 200 && score < 300)
speed = 100;
else if (score >= 300 && score < 400)
speed = 50;
else if (score >= 400)
speed = 20;
}
void update_score() {
score += 10;
}
```
该代码使用了 Windows.h 头文件中的 Sleep 函数,因此只能在 Windows 平台上编译运行。
阅读全文
相关推荐









