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生成excel的实例代码
Nov 08 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
简单了解Django应用app及分布式路由
Jul 24 Python
Python3 JSON编码解码方法详解
Sep 06 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
python 实现汉诺塔游戏
Nov 28 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
详解JS中遍历语法的比较
2017/04/07 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue简单实现原理详解
2020/05/07 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
Python使用剪切板的方法
2017/06/06 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
django如何自己创建一个中间件
2019/07/24 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
白酒业务员岗位职责
2013/12/27 职场文书
挂职自我鉴定
2014/02/26 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android
Spring中bean集合注入的方法详解
2022/07/07 Java/Android