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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
django站点管理详解
Dec 12 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python使用正则筛选信用卡
Jan 27 Python
python保存字典和读取字典的实例代码
Jul 07 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
python实现吃苹果小游戏
Mar 21 Python
Python字典dict常用方法函数实例
Nov 09 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
thinkphp缓存技术详解
2014/12/09 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python中List.count()方法的使用教程
2015/05/20 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
用Python shell简化开发
2018/08/08 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python标识符命名规范原理解析
2020/01/10 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
巡警年度自我鉴定
2014/02/21 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
认识实习感想
2015/08/10 职场文书