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 相关文章推荐
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
谈谈如何手动释放Python的内存
Dec 17 Python
python 中random模块的常用方法总结
Jul 08 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
Python变量类型知识点总结
Feb 18 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 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文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python使用Flask操作mysql实现登录功能
2018/05/14 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python 实现多维数组转向量
2019/11/30 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
授权委托书
2014/07/31 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
goland 恢复已更改文件的操作
2021/04/28 Golang
详解Django的MVT设计模式
2021/04/29 Python
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP