c语言不使用数组,制作迷宫地图
时间: 2023-02-11 21:41:28 浏览: 142
C语言中可以使用指针和结构体来制作迷宫地图。
可以用一个二维指针来表示地图,每个指针指向一个结构体,结构体中存储该位置是否可走,以及该位置上下左右是否有墙。
通过修改结构体中的信息,来改变地图的构造。
可以使用 DFS/BFS 算法来搜索迷宫路径。
附上示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define ROW 5
#define COL 5
struct Map {
bool walkable;
bool up;
bool down;
bool left;
bool right;
};
struct Map** create_map(){
int i, j;
struct Map** map = (struct Map**)malloc(ROW * sizeof(struct Map*));
for(i = 0; i < ROW; i++){
map[i] = (struct Map*)malloc(COL * sizeof(struct Map));
for(j = 0; j < COL; j++){
map[i][j].walkable = true;
map[i][j].up = true;
map[i][j].down = true;
map[i][j].left = true;
map[i][j].right = true;
}
}
return map;
}
void destroy_map(struct Map** map){
int i;
for(i = 0; i < ROW; i++)
free(map[i]);
free(map);
}
int main(void){
int i, j;
struct Map** map = create_map();
map[1][1].left = false;
map[2][2].up = false;
map[3][3].down = false;
map[4][4].right = false;
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
if(map[i][j].up) printf("+--");
else printf("+ ");
}
printf("+\n");
for(j = 0; j < COL; j++){
if(map[i][j].left) printf("| ");
else printf(" ");
}
printf("|\n");
}
for(i = 0; i < COL
阅读全文