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 21 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
对python的输出和输出格式详解
Dec 08 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
python的pip有什么用
Jun 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
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
js实现图片推拉门效果代码实例
2019/05/18 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python实现全局变量的两个解决方法
2014/07/03 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Python面向对象编程基础实例分析
2020/01/17 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
5款实用的python 工具推荐
2020/10/13 Python
消防安全责任书范本
2014/04/15 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
同学会演讲稿
2019/04/02 职场文书
python中的random模块和相关函数详解
2022/04/22 Python