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解析文件示例
Jan 23 Python
Python中的zipfile模块使用详解
Jun 25 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
Django框架模板的使用方法示例
May 25 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
用60行代码实现Python自动抢微信红包
Feb 04 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中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
在Express中提供静态文件的实现方法
2019/10/17 Javascript
js实现内置计时器
2019/12/16 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
python使用arcpy.mapping模块批量出图
2017/03/06 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python如何读写CSV文件
2020/08/13 Python
python自动生成证件号的方法示例
2021/01/14 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
优秀少先队员主要事迹材料
2014/05/28 职场文书
文化大革命观后感
2015/06/17 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS