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实现每次处理一个字符的三种方法
Oct 09 Python
Python XML RPC服务器端和客户端实例
Nov 22 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
Python使用gRPC传输协议教程
Oct 16 Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
详解Python3中的 input() 函数
Mar 18 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
Python数据类型最全知识总结
May 31 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php多文件上传下载示例分享
2014/02/20 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
详解vue中axios的封装
2018/07/18 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
Python中有几个关键字
2020/06/04 Python
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
自我介绍演讲稿
2014/01/15 职场文书
美德好少年事迹材料
2014/01/19 职场文书
五年级科学教学反思
2014/02/05 职场文书
企业标语口号
2014/06/10 职场文书
个人委托书如何写
2014/09/25 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
行政处罚事先告知书
2015/07/01 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
Python办公自动化PPT批量转换操作
2021/09/15 Python
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
关于MySQL中explain工具的使用
2023/05/08 MySQL