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 冒泡,选择,插入排序使用实例
Feb 05 Python
Python实现控制台进度条功能
Jan 04 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
用Python写一个自动木马程序
Sep 17 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
python基础之//、/与%的区别详解
Jun 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
Python读取实时数据流示例
2019/12/02 Python
Python 爬虫性能相关总结
2020/08/03 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
CSS3 边框效果
2019/11/04 HTML / CSS
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
阿波罗盒子:Apollo Box
2017/08/14 全球购物
什么是反射
2012/03/17 面试题
求职简历中个人的自我评价
2013/12/01 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
难忘的一天教学反思
2014/04/30 职场文书
工作会议方案
2014/05/21 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
个人党性分析总结
2015/03/05 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
《失物招领》教学反思
2016/02/20 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
php实现自动生成验证码的实例讲解
2021/11/17 PHP