用C语言设计一个简单的迷宫,用户通过输入方向(上、下、左、右)来移动,目标是找到出口逃 脱。 2、要求: (1)使用二维数组表示迷宫。 (2)检查移动是否合法(不越界、非墙)。 (3)给出当前位置和迷宫状态。 (4)检测到出口时结束游戏
时间: 2024-09-20 14:13:39 浏览: 28
在C语言中,我们可以设计一个迷宫游戏的基本框架。首先,我们需要创建一个二维字符数组来表示迷宫,其中0通常代表空地,'W'代表墙壁,'E'代表出口。下面是一个简单的示例程序:
```c
#include <stdio.h>
#define MAZE_WIDTH 10 // 迷宫宽度
#define MAZE_HEIGHT 8 // 迷宫高度
typedef struct {
int x; // 当前位置x坐标
int y; // 当前位置y坐标
} Position;
// 初始化迷宫数组
char maze[MAZE_WIDTH][MAZE_HEIGHT] = {
{'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W'},
{'W', '.', '.', '.', '.', '.', '.', '.'},
{'W', '.', '.', '.', '.', '.', '.', '.'},
{'W', '.', '.', '.', '.', '.', '.', '.'},
{'W', '.', '.', '.', '.', '.', '.', '.'},
{'W', '.', '.', 'E', '.', '.', '.', '.'}, // 出口在此行
{'W', '.', '.', '.', '.', '.', '.', '.'},
{'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W'}
};
// 检查移动是否合法
int is_valid_move(int x, int y) {
if (x >= 0 && x < MAZE_WIDTH && y >= 0 && y < MAZE_HEIGHT && maze[x][y] != 'W') return 1;
return 0;
}
// 用户输入并移动
void move(Position *pos, char direction) {
switch(direction) {
case 'u':
if (is_valid_move(pos->x - 1, pos->y)) pos->x--;
break;
case 'd':
if (is_valid_move(pos->x + 1, pos->y)) pos->x++;
break;
case 'l':
if (is_valid_move(pos->x, pos->y - 1)) pos->y--;
break;
case 'r':
if (is_valid_move(pos->x, pos->y + 1)) pos->y++;
break;
default:
printf("无效的方向\n");
break;
}
}
// 主函数
int main() {
Position player = {0, 0}; // 设定初始位置在左上角
while (player.x != MAZE_WIDTH - 1 || player.y != MAZE_HEIGHT - 1) {
printf("当前位置: (%d,%d)\n", player.x, player.y);
scanf("%c", &direction); // 用户输入方向
move(&player, direction);
printf(maze[player.x][player.y]); // 打印当前位置
}
printf("\n恭喜,你找到了出口!\n");
return 0;
}
```
在这个程序里,用户按照提示输入上(u)、下(d)、左(l)、右(r)移动,直到到达出口('E')。注意,这是一个简化的示例,实际的游戏中可能会需要更复杂的循环和条件判断来处理边界和其他细节。
阅读全文