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 相关文章推荐
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
Python插件机制实现详解
May 04 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Python 发送邮件方法总结
Aug 10 Python
python编写实现抽奖器
Sep 10 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
2006/11/25 PHP
ajax php 实现写入数据库
2009/09/02 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python验证码截取识别代码实例
2020/05/16 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
家长评语大全
2014/01/22 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
单位委托书怎么写
2014/08/02 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
法律服务所工作总结
2015/08/10 职场文书
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS