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爬取网站数据保存使用的方法
Nov 20 Python
python迭代器实例简析
Sep 25 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
python中p-value的实现方式
Dec 16 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
在Python中字典按值排序的实现方法
Nov 12 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 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
下载文件的点击数回填
2006/10/09 PHP
PHP开发框架总结收藏
2008/04/24 PHP
获取远程文件大小的php函数
2010/01/11 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python paramiko模块学习分享
2017/08/23 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python基于http下载视频或音频
2018/06/20 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
护理毕业生自荐信范文
2013/12/22 职场文书
公司保密承诺书
2014/03/27 职场文书
家长会演讲稿
2014/04/26 职场文书
英文产品推荐信
2015/03/27 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
客户答谢会致辞
2015/07/30 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers