用c语言创建一个迷宫游戏‘、
时间: 2023-06-19 18:08:31 浏览: 224
好的,下面是一个简单的迷宫游戏的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#define ROWS 20
#define COLS 30
char maze[ROWS][COLS]; // 迷宫数组
int start_x, start_y; // 起点坐标
int end_x, end_y; // 终点坐标
void init_maze(void); // 初始化迷宫
void print_maze(void); // 打印迷宫
bool find_path(int, int); // 找到出口
bool can_go(int, int); // 判断当前位置是否可行
int main(void)
{
srand((unsigned)time(NULL)); // 设置随机数种子
init_maze(); // 初始化迷宫
print_maze(); // 打印迷宫
// 从起点开始查找路径
if (find_path(start_x, start_y)) {
printf("找到了出口!\n");
} else {
printf("没有找到出口!\n");
}
return 0;
}
// 初始化迷宫
void init_maze(void)
{
int i, j;
// 生成迷宫
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (i == 0 || i == ROWS - 1 || j == 0 || j == COLS - 1) {
maze[i][j] = '#'; // 边界为墙
} else {
maze[i][j] = ' '; // 内部为空地
}
}
}
// 随机生成起点和终点
start_x = rand() % (ROWS - 2) + 1;
start_y = rand() % (COLS - 2) + 1;
maze[start_x][start_y] = 'S';
do {
end_x = rand() % (ROWS - 2) + 1;
end_y = rand() % (COLS - 2) + 1;
} while (end_x == start_x && end_y == start_y);
maze[end_x][end_y] = 'E';
// 随机生成墙
for (i = 0; i < ROWS * COLS / 4; i++) {
int row = rand() % (ROWS - 2) + 1;
int col = rand() % (COLS - 2) + 1;
if (maze[row][col] == ' ') {
maze[row][col] = '#';
}
}
}
// 打印迷宫
void print_maze(void)
{
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%c", maze[i][j]);
}
printf("\n");
}
}
// 查找路径
bool find_path(int x, int y)
{
if (maze[x][y] == 'E') {
return true; // 找到出口
}
maze[x][y] = '+'; // 标记为已经走过
if (can_go(x - 1, y) && find_path(x - 1, y)) {
return true;
}
if (can_go(x, y + 1) && find_path(x, y + 1)) {
return true;
}
if (can_go(x + 1, y) && find_path(x + 1, y)) {
return true;
}
if (can_go(x, y - 1) && find_path(x, y - 1)) {
return true;
}
maze[x][y] = ' '; // 恢复为未走过
return false; // 没有找到出口
}
// 判断当前位置是否可行
bool can_go(int x, int y)
{
if (maze[x][y] == ' ' || maze[x][y] == 'E') {
return true; // 可以走
} else {
return false; // 不可走
}
}
```
这个程序生成一个随机的迷宫,然后从起点开始查找路径,直到找到出口或者无法继续前进。在程序执行完毕后,会输出是否找到了出口。
阅读全文