吃豆人游戏c语言
时间: 2023-07-09 19:15:26 浏览: 218
好的,下面是一个简单的吃豆人游戏的C语言代码,可以供您参考:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 10
#define COL 20
int map[ROW][COL] = {0}; //地图
int score = 0; //分数
int dotNum = 0; //豆子数量
int x, y; //吃豆人的坐标
int over = 0; //游戏结束标志
void drawMap(); //绘制地图
void initGame(); //初始化游戏
void drawScore(); //绘制分数
void update(); //更新游戏
void move(int direction); //移动吃豆人
void checkDot(); //检查是否吃到豆子
void checkGameOver(); //检查游戏是否结束
int main() {
initGame(); //初始化游戏
while (!over) { //游戏未结束
drawMap(); //绘制地图
drawScore(); //绘制分数
update(); //更新游戏
checkGameOver(); //检查游戏是否结束
Sleep(100); //暂停100毫秒
}
printf("\n\nGame Over! Your score is %d.", score); //输出分数
return 0;
}
void drawMap() {
system("cls"); //清屏
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (map[i][j] == 1) {
printf("O"); //绘制豆子
} else if (i == x && j == y) {
printf("C"); //绘制吃豆人
} else {
printf(" "); //绘制空格
}
}
printf("\n");
}
}
void initGame() {
srand(time(NULL)); //设置随机数种子
//随机生成豆子
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (rand() % 10 == 0) {
map[i][j] = 1; //设置豆子标记
dotNum++; //豆子数量加1
}
}
}
x = ROW / 2; //吃豆人的初始位置
y = COL / 2;
}
void drawScore() {
printf("Score: %d\n", score);
}
void update() {
if (_kbhit()) { //检测是否有键盘输入
int direction = _getch(); //获取方向键
switch (direction) {
case 'w':
move(1); //向上移动
break;
case 's':
move(2); //向下移动
break;
case 'a':
move(3); //向左移动
break;
case 'd':
move(4); //向右移动
break;
}
} else {
move(0); //不移动
}
}
void move(int direction) {
switch (direction) {
case 1:
x--; //向上移动
break;
case 2:
x++; //向下移动
break;
case 3:
y--; //向左移动
break;
case 4:
y++; //向右移动
break;
}
checkDot(); //检查是否吃到豆子
}
void checkDot() {
if (map[x][y] == 1) { //吃到豆子
map[x][y] = 0; //清除豆子标记
score += 10; //分数加10
dotNum--; //豆子数量减1
if (dotNum == 0) { //所有豆子被吃完
over = 1; //游戏结束
}
}
}
void checkGameOver() {
if (x < 0 || x >= ROW || y < 0 || y >= COL) { //撞墙
over = 1; //游戏结束
}
}
```
这是一个基本的控制台游戏,使用了常见的C语言库函数和语法。您可以在此基础上进行修改和完善,添加更多的功能和内容。
阅读全文