Python深度优先算法生成迷宫


Posted in Python onJanuary 22, 2018

本文实例为大家分享了Python深度优先算法生成迷宫,供大家参考,具体内容如下

import random 
 
#warning: x and y confusing 
 
sx = 10 
sy = 10 
dfs = [[0 for col in range(sx)] for row in range(sy)] 
maze = [[' ' for col in range(2*sx+1)] for row in range(2*sy+1)] 
#1:up 2:down 3:left 4:right 
operation = {1:(0,-1),2:(0,1),3:(-1,0),4:(1,0)} 
direction = [1, 2, 3, 4] 
stack = [] 
 
for i in range(2*sx+1): 
 if i%2 == 0: 
  for j in range(2*sx+1): 
   maze[i][j] = '#' 
for i in range(2*sy+1): 
 if i%2 == 0: 
  for j in range(2*sy+1): 
   maze[j][i] = '#' 
 
def show(graph): 
 for i in graph: 
  for j in i: 
   print j, 
  print 
 
def showRouter(stack): 
 RGragh = [[0 for col in range(sx)] for row in range(sy)] 
 for (x, y) in stack: 
  RGragh[y][x] = 1 
 show(RGragh) 
 print 
 
def generateMaze(start): 
 x, y = start 
 dfs[y][x] = 1 
 random.shuffle(direction) 
 for d in direction: 
  px, py = (x + y for x, y in zip(start, operation[d])) 
  if px < 0 or px >= sx or py < 0 or py >= sy: 
   pass 
  else: 
   if dfs[py][px] is not 1: 
    mx = 2*x + 1 
    my = 2*y + 1 
    if d == 1: 
     maze[my-1][mx] = ' ' 
    elif d == 2: 
     maze[my+1][mx] = ' ' 
    elif d == 3: 
     maze[my][mx-1] = ' ' 
    elif d == 4: 
     maze[my][mx+1] = ' ' 
    generateMaze((px,py)) 
 
generateMaze((0,0)) 
show(dfs) 
show(maze)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python3.7简单的爬虫实例详解
Jul 08 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python中web框架的自定义创建
Sep 08 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Django框架中视图的用法
Jun 10 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 #Python
Python实现简单文本字符串处理的方法
Jan 22 #Python
Python简单实现控制电脑的方法
Jan 22 #Python
Zookeeper接口kazoo实例解析
Jan 22 #Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 #Python
python的Crypto模块实现AES加密实例代码
Jan 22 #Python
python实现求最长回文子串长度
Jan 22 #Python
You might like
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
TCP/IP的分层模型
2013/10/27 面试题
经典大学生求职信范文
2014/01/06 职场文书
高二学生评语大全
2014/04/25 职场文书
公司欠款证明
2015/06/24 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
人力资源部工作计划
2019/05/14 职场文书
详解php中流行的rpc框架
2021/05/29 PHP