用c语言编写一个走迷宫的小游戏
时间: 2023-12-07 10:02:59 浏览: 29
好的,下面是一个简单的迷宫游戏,使用C语言编写。游戏规则是从起点出发,找到迷宫的终点,期间避免碰到障碍物。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define HEIGHT 10
#define WIDTH 15
int maze[HEIGHT][WIDTH];
void print_maze() {
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
if (maze[i][j] == 0) {
printf(" ");
} else if (maze[i][j] == 1) {
printf("#");
} else if (maze[i][j] == 2) {
printf("S");
} else if (maze[i][j] == 3) {
printf("E");
} else if (maze[i][j] == 4) {
printf("*");
}
}
printf("\n");
}
}
void create_maze() {
int i, j;
srand(time(NULL));
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
maze[i][j] = 1;
} else if (rand() % 5 == 0) {
maze[i][j] = 1;
} else {
maze[i][j] = 0;
}
}
}
maze[1][1] = 2;
maze[HEIGHT - 2][WIDTH - 2] = 3;
}
int move(int x, int y) {
if (maze[x][y] == 1 || maze[x][y] == 4) {
return 0;
} else if (maze[x][y] == 3) {
return 1;
}
maze[x][y] = 4;
print_maze();
printf("Press any key to continue...\n");
getchar();
if (move(x - 1, y) || move(x + 1, y) || move(x, y - 1) || move(x, y + 1)) {
return 1;
}
maze[x][y] = 0;
return 0;
}
int main() {
create_maze();
print_maze();
printf("Press any key to start the game...\n");
getchar();
if (move(1, 1)) {
printf("Congratulations! You win!\n");
} else {
printf("Game over! Try again!\n");
}
return 0;
}
```
在这个游戏中,通过随机生成迷宫,将起点和终点放置在迷宫的两个角落。移动时,先判断当前位置是否为障碍物或已经走过的位置,如果是,则返回失败;如果当前位置是终点,则返回成功。如果当前位置没有障碍物,就标记为已经走过的位置,并递归地尝试向四个方向移动,如果有一个方向成功到达终点,就返回成功。如果所有方向都失败,就将当前位置标记为未走过的位置,并返回失败。