用c语言编写一个吃豆人游戏
时间: 2023-12-07 07:03:24 浏览: 60
好的,下面是一个简单的吃豆人游戏的 C 语言实现,仅供参考:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define WIDTH 20
#define HEIGHT 20
#define MAX_FOODS 5
int x, y; // 吃豆人的位置
int score; // 得分
int foods[MAX_FOODS][2]; // 食物的位置
int num_foods; // 剩余食物数量
int map[HEIGHT][WIDTH]; // 地图
// 初始化地图,0 表示空位,1 表示墙,2 表示食物,3 表示吃豆人
void init_map() {
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
map[i][j] = 1; // 边界上都是墙
} else {
map[i][j] = 0; // 中间都是空位
}
}
}
// 随机放置食物
num_foods = 0;
while (num_foods < MAX_FOODS) {
int fx = rand() % (WIDTH - 2) + 1;
int fy = rand() % (HEIGHT - 2) + 1;
if (map[fy][fx] == 0) {
map[fy][fx] = 2;
foods[num_foods][0] = fx;
foods[num_foods][1] = fy;
num_foods++;
}
}
// 放置吃豆人
x = WIDTH / 2;
y = HEIGHT / 2;
map[y][x] = 3;
score = 0;
}
// 显示地图
void show_map() {
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
switch (map[i][j]) {
case 0: // 空位
printf(" ");
break;
case 1: // 墙
printf("#");
break;
case 2: // 食物
printf(".");
break;
case 3: // 吃豆人
printf("O");
break;
}
}
printf("\n");
}
printf("Score: %d\n", score);
}
// 处理按键
void handle_input() {
if (_kbhit()) {
char c = _getch();
switch (c) {
case 'w':
if (map[y - 1][x] != 1) y--;
break;
case 's':
if (map[y + 1][x] != 1) y++;
break;
case 'a':
if (map[y][x - 1] != 1) x--;
break;
case 'd':
if (map[y][x + 1] != 1) x++;
break;
}
}
}
// 更新游戏状态
void update_game() {
// 检查是否吃到食物
int i;
for (i = 0; i < num_foods; i++) {
int fx = foods[i][0];
int fy = foods[i][1];
if (x == fx && y == fy) { // 吃到食物
map[fy][fx] = 0; // 食物消失
score++;
// 放置新食物
fx = rand() % (WIDTH - 2) + 1;
fy = rand() % (HEIGHT - 2) + 1;
if (map[fy][fx] == 0) {
map[fy][fx] = 2;
foods[i][0] = fx;
foods[i][1] = fy;
}
}
}
// 更新吃豆人位置
map[y][x] = 3;
}
int main() {
srand(time(NULL));
init_map();
while (1) {
system("cls");
show_map();
handle_input();
update_game();
Sleep(100);
}
return 0;
}
```
这个程序使用了 Windows 系统的控制台函数,可能无法在其他系统或 IDE 中运行。如果有需要,请自行修改代码。