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内置的字符串处理函数整理
Jan 29 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
python学生管理系统学习笔记
Mar 19 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
python实现单链表的方法示例
Sep 03 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 Python
python实现简易名片管理系统
Apr 11 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 冒泡排序算法的实现代码
2010/08/08 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
详解vue-router基本使用
2017/04/18 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python WindowsError的错误代码详解
2017/07/23 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python函数的万能参数传参详解
2019/07/26 Python
python 魔法函数实例及解析
2019/09/25 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
工业设计专业个人求职信范文
2013/12/28 职场文书
20岁生日感言
2014/01/13 职场文书
财务会计专业求职信
2014/06/09 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
2014年创卫工作总结
2014/11/24 职场文书
三峡人家导游词
2015/01/31 职场文书
导游词之江南周庄
2019/12/06 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
Python实现Hash算法
2022/03/18 Python
python图像处理 PIL Image操作实例
2022/04/09 Python