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中何种情况下需要使用断言
Apr 01 Python
Python的Flask框架中web表单的教程
Apr 20 Python
Python里disconnect UDP套接字的方法
Apr 23 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Django如何将URL映射到视图
Jul 29 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
Python生成器常见问题及解决方案
Mar 21 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
php7性能提升的原因详解
2019/10/13 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
Python 深入理解yield
2008/09/06 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
python 两个数据库postgresql对比
2019/10/21 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
创业者是否需要商业计划书?
2014/02/07 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
Python基础知识之变量的详解
2021/04/14 Python