用c语言写个贪吃蛇小游戏
时间: 2023-05-14 15:06:01 浏览: 155
基于C语言写的贪吃蛇小游戏
好的,以下是一个简单的贪吃蛇小游戏的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define WIDTH 20
#define HEIGHT 20
int snake[WIDTH * HEIGHT][2]; // 蛇身坐标
int food[2]; // 食物坐标
int length = 3; // 蛇身长度
int direction = 0; // 蛇头方向,0 上,1 右,2 下,3 左
int score = 0; // 得分
void init() {
// 初始化蛇身
snake[0][0] = WIDTH / 2;
snake[0][1] = HEIGHT / 2;
snake[1][0] = snake[0][0];
snake[1][1] = snake[0][1] + 1;
snake[2][0] = snake[1][0];
snake[2][1] = snake[1][1] + 1;
// 初始化食物
srand(time(NULL));
food[0] = rand() % WIDTH;
food[1] = rand() % HEIGHT;
}
void draw() {
system("cls"); // 清屏
// 绘制地图
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (i == food[1] && j == food[0]) {
printf("o"); // 绘制食物
} else {
int flag = 0;
for (int k = 0; k < length; k++) {
if (snake[k][0] == j && snake[k][1] == i) {
printf("*"); // 绘制蛇身
flag = 1;
break;
}
}
if (!flag) {
printf(" "); // 绘制空格
}
}
}
printf("\n");
}
// 绘制得分
printf("Score: %d\n", score);
}
void update() {
// 移动蛇身
for (int i = length - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
// 移动蛇头
switch (direction) {
case 0: snake[0][1]--; break;
case 1: snake[0][0]++; break;
case 2: snake[0][1]++; break;
case 3: snake[0][0]--; break;
}
// 判断是否吃到食物
if (snake[0][0] == food[0] && snake[0][1] == food[1]) {
length++;
score++;
food[0] = rand() % WIDTH;
food[1] = rand() % HEIGHT;
}
// 判断是否撞墙或撞到自己
if (snake[0][0] < 0 || snake[0][0] >= WIDTH || snake[0][1] < 0 || snake[0][1] >= HEIGHT) {
printf("Game Over!\n");
exit(0);
}
for (int i = 1; i < length; i++) {
if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) {
printf("Game Over!\n");
exit(0);
}
}
}
int main() {
init();
while (1) {
draw();
update();
// 获取用户输入
if (_kbhit()) {
int ch = _getch();
if (ch == 72 && direction != 2) direction = 0; // 上
if (ch == 77 && direction != 3) direction = 1; // 右
if (ch == 80 && direction != 0) direction = 2; // 下
if (ch == 75 && direction != 1) direction = 3; // 左
}
Sleep(100); // 延时
}
return 0;
}
```
希望这个代码能够帮到你!
阅读全文