java迷宫生成算法_DFS算法迷宫生成器

该博客讨论了使用深度优先搜索(DFS)算法在ASCII中生成迷宫的问题。作者遇到的问题是,迷宫在创建过程中会被阻止,因为所有邻居单元格都被标记为已访问。代码示例展示了如何尝试实现DFS,并提供了期望生成的迷宫示例。
摘要由CSDN通过智能技术生成

我正在尝试使用DFS算法在ASCII中创建迷宫('#'表示墙和''自由空间),其左上角开始,右下角出口 . 问题是迷宫开始创建,然后它被阻止,因为它的所有邻居都已被访问过 .

我从左上角开始,将单元格标记为已访问并放置一个''(它代表一个自由空间),然后我随机选择了一个单元格的邻居,我也这样做 . 但是我把它放在一个while循环中,我确信这不是个好主意 .

在这里我尝试DFS:

int generation(t_maze *maze, int pos_y, int pos_x)

{

int dest;

maze->maze[pos_y][pos_x] = ' ';

maze->visited[pos_y][pos_x] = '1';

while (maze->maze[maze->height - 1][maze->width - 1] == '#')

{

if ((dest = my_rand(1, 4)) == 1 && pos_y - 1 >= 0 && maze->visited[pos_y - 1][pos_x] == '0')

generation(maze, pos_y - 1, pos_x);

else if (dest == 2 && pos_x + 1 < maze->width && maze->visited[pos_y][pos_x + 1] == '0')

generation(maze, pos_y, pos_x + 1);

else if (dest == 3 && pos_y + 1 < maze->height && maze->visited[pos_y + 1][pos_x] == '0')

generation(maze, pos_y + 1, pos_x);

else if (dest == 4 && pos_x - 1 >= 0 && maze->visited[pos_y][pos_x - 1] == '0')

generation(maze, pos_y, pos_x - 1);

my_showtab(maze->maze); //it prints the 2d array

usleep(50000);

}

typedef struct s_maze

{

int width;

int height;

char **maze;

char **visited;

} t_maze;

在结构中,宽度是迷宫高度的宽度是迷宫迷宫的高度是一个二维数组,应该填充''和'#'访问是一个2D数组,0和1,0:未访问, 1:参观了

我想要一个这样的迷宫(小例子)

########

# #

## #

# #

#######

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值