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 19 Python
Python有序字典简单实现方法示例
Sep 28 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
python matlibplot绘制多条曲线图
Feb 19 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
详解python日志输出使用配置文件格式
Feb 10 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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
JS代码格式化和语法着色V2
2006/10/14 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
详解Python迭代和迭代器
2016/03/28 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python获取多线程及子线程的返回值
2017/11/15 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
四年级下册教学反思
2014/02/01 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
单位实习介绍信
2015/05/05 职场文书
花木兰观后感
2015/06/10 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL