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使用win32com在百度空间插入html元素示例
Feb 20 Python
使用Python实现一个简单的项目监控
Mar 31 Python
python的keyword模块用法实例分析
Jun 30 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
django的登录注册系统的示例代码
May 14 Python
python实现将汉字保存成文本的方法
Nov 16 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
python-xpath获取html文档的部分内容
Mar 06 Python
Python xmltodict模块安装及代码实例
Oct 05 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写UltraEdit插件脚本实现方法
2011/12/26 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
js注意img图片的onerror事件的分析
2011/01/01 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python编码最佳实践之总结
2016/02/14 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
试用期自我鉴定范文
2014/03/20 职场文书
年终考核实施方案
2014/05/26 职场文书
搞笑的获奖感言
2014/08/16 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
出差报告范文
2014/11/06 职场文书
天坛导游词
2015/02/02 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
消防安全主题班会
2015/08/12 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL