迷宫求解的C语言代码
时间: 2023-01-28 19:45:23 浏览: 58
迷宫求解C语言代码
好的,我来为您编写一个迷宫求解的 C 语言代码。
首先,我们需要定义一些常量和类型,用于表示迷宫地图、路径和方向。
```c
#define MAP_WIDTH 10
#define MAP_HEIGHT 10
enum {
CELL_EMPTY = 0,
CELL_WALL,
CELL_START,
CELL_END
};
enum {
DIR_UP = 0,
DIR_RIGHT,
DIR_DOWN,
DIR_LEFT
};
typedef struct {
int x;
int y;
} Point;
typedef struct {
Point pos;
int direction;
} Move;
```
然后,我们可以定义一个函数 `find_path`,用于在地图中寻找从起点到终点的路径。
```c
#define MAX_MOVES 100
int find_path(int map[MAP_HEIGHT][MAP_WIDTH], Point start, Point end, Move moves[MAX_MOVES])
{
// 初始化路径长度为 0
int move_count = 0;
// 初始化当前位置为起点
Point pos = start;
// 当前位置不是终点时循环
while (!(pos.x == end.x && pos.y == end.y)) {
// 标记当前位置已访问过
map[pos.y][pos.x] = CELL_WALL;
// 尝试向上走
if (pos.y > 0 && map[pos.y - 1][pos.x] != CELL_WALL) {
pos.y--;
moves[move_count++] = (Move){pos, DIR_UP};
continue;
}
// 尝试向右走
if (pos.x < MAP_WIDTH - 1 && map[pos.y][pos.x + 1] != CELL_WALL) {
pos.x++;
moves[move_count++] = (Move){pos, DIR_RIGHT};
continue;
}
// 尝试向下走
if (pos.y < MAP_HEIGHT - 1 && map[pos.y + 1][pos.x] != CELL_WALL) {
pos.
阅读全文