用C语言编写一个迷宫游戏
时间: 2023-09-16 20:14:59 浏览: 88
好的,让我们来编写一个简单的迷宫游戏。首先,我们需要定义迷宫的地图,我们可以用二维数组来表示。0 表示可以通过的路,1 表示障碍物。
```c
#include <stdio.h>
#define ROW 10
#define COL 10
int map[ROW][COL] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 0, 1, 1, 1, 0, 1, 0},
{0, 1, 1, 0, 1, 1, 1, 0, 1, 0},
{0, 1, 1, 1, 1, 0, 0, 1, 1, 0},
{0, 1, 0, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 0, 0, 0, 1, 1, 0},
{0, 1, 0, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 0, 0, 0, 0, 0, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
```
接下来,我们需要定义迷宫游戏的角色位置和目标位置,我们可以用一个结构体来表示。
```c
typedef struct {
int x;
int y;
} Position;
Position player = {1, 1};
Position goal = {8, 8};
```
然后,我们需要编写一个函数来显示迷宫地图和角色位置。这里我们使用字符来表示地图和角色。
```c
void display() {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
if (i == player.x && j == player.y) {
printf("P ");
} else if (i == goal.x && j == goal.y) {
printf("G ");
} else if (map[i][j] == 0) {
printf(". ");
} else {
printf("# ");
}
}
printf("\n");
}
}
```
接下来,我们需要编写一个函数来移动角色。我们可以用 w、a、s、d 来控制角色的上下左右移动。在移动前,我们需要判断目标位置是否是障碍物或者超出地图范围。
```c
void move(char direction) {
int x = player.x;
int y = player.y;
switch (direction) {
case 'w':
x--;
break;
case 'a':
y--;
break;
case 's':
x++;
break;
case 'd':
y++;
break;
default:
break;
}
if (x < 0 || x >= ROW || y < 0 || y >= COL || map[x][y] == 1) {
printf("Invalid move!\n");
} else {
player.x = x;
player.y = y;
}
}
```
最后,我们需要编写一个游戏循环,不断读取用户输入并执行相应的操作,直到角色到达目标位置。
```c
int main() {
display();
while (player.x != goal.x || player.y != goal.y) {
char direction;
printf("Enter direction (w/a/s/d): ");
scanf(" %c", &direction);
move(direction);
display();
}
printf("Congratulations! You win!\n");
return 0;
}
```
现在,我们可以编译并运行程序,玩一下这个简单的迷宫游戏了。
阅读全文