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编写检测数据库SA用户的方法
Jul 11 Python
python爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
python读写csv文件实例代码
Jul 05 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python障碍式期权定价公式
Jul 19 Python
PyTorch中的C++扩展实现
Apr 02 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 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创建基本身份认证站点的方法详解
2013/06/08 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Django自定义分页效果
2017/06/27 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python实发邮件实例详解
2019/11/11 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
人事专员工作职责
2014/02/22 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
大学应届生的自我评价
2014/03/06 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
工程款申请报告
2015/05/15 职场文书
荒岛余生观后感
2015/06/09 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL