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学习笔记之解析json的方法分析
Apr 21 Python
不可错过的十本Python好书
Jul 06 Python
python中reduce()函数的使用方法示例
Sep 29 Python
python实现redis三种cas事务操作
Dec 19 Python
python获取代理IP的实例分享
May 07 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python 实现调用子文件下的模块方法
Dec 07 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
WxPython建立批量录入框窗口
Feb 27 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
python基于plotly实现画饼状图代码实例
Dec 16 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php析构函数的简单使用说明
2015/08/24 PHP
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python基础教程之五种数据类型详解
2017/01/12 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
python 瀑布线指标编写实例
2020/06/03 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
协议书的格式
2014/04/23 职场文书
幼儿教师求职信
2014/05/24 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
转让协议书
2015/01/27 职场文书
初中语文教师研修日志
2015/11/13 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
Nginx进程调度问题详解
2021/09/25 Servers
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers