迷宫与寻路可视化(一)深度优先搜索构建迷宫(DFS算法)

效果展示

在这里插入图片描述

基本思想

不论是DFS,BFS还是RFS,这些算法生成的迷宫本质上是一个二维矩阵网络形式的生成树,也就是说其中没有回路,同时从右上角的起点到迷宫中的每一点都有且仅有一条路径,当然,到终点的路径也是唯一的。

深度优先遍历总是从当前最长的路径的末端随机选择一个可扩展点进行扩展,如果出现回路或者抵达边界,那么就回溯到最近的一个可扩展分枝。这种算法生成的迷路分枝相对较少,路径也更长更曲折。

函数详解

一、界面初始化

import pygame
import sys 
import math 
import random
#(1,1)(1,2)行列
# pygame 初始化
pygame.init()
# 设置棋盘大小,DFS规定必须是奇数,每一个奇数的格子必须是节点
chess_number=89
IF_RANDOM_START_END=0#是否随机终点和起点
TICK=100
BG=(144,136,145)#背景色
LINECOLOR=(112,73,46)#网格色
STARTCOLOR=(253,176,36)#起点格子的颜色
ENDCOLOR=(224,90,9)#终点(224,90,9)橙色     (252,61,63 )大红
WALLCOLOR=(33,41,48)#墙壁的颜色

#迷宫在画布上显示的位置
START_POS=(50,50)
START_POSX=50
START_POSY=50
CELL_LENGTH=int(600/chess_number)#每个格子的像素大小
LINE_WIDTH=3#线的宽度
BIAS=5#中心偏差,取奇数,起点和终点离对角线的距离
# 设置背景框大小等pygame初始化操作
size = width, height = 2*START_POSX+chess_number*CELL_LENGTH,2*START_POSY+chess_number*CELL_LENGTH
clock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Ace Cheney made")


if IF_RANDOM_START_END==1:
	# 设置起始位置
	start_posx=random.randint(0,chess_number-1)
	start_posy=random.randint(0,chess_number-1)
	# 设置终点始位置
	end_posx=random.randint(0,chess_number-1)
	end_posy=random.randint(0,chess_number-1)
else:
	# 设置起始位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ace Cheney

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值