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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
python学生管理系统学习笔记
Mar 19 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Python matplotlib可视化实例解析
Jun 01 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Python开发入门——迭代的基本使用
Sep 03 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
python 实现音频叠加的示例
Oct 29 Python
python实现学员管理系统(面向对象版)
Jun 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
MySQL修改密码方法总结
2008/03/25 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
实用自动化运维Python脚本分享
2018/06/04 Python
python生成九宫格图片
2018/11/19 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
django 信号调度机制详解
2019/07/19 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
什么是Python包的循环导入
2020/09/08 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
一套软件测试笔试题
2014/07/25 面试题
群众路线批评与自我批评
2014/02/06 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
社团活动总结
2014/04/28 职场文书
大学生简历求职信
2014/06/24 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
入党转正申请书范文
2019/05/20 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
MYSQL常用函数介绍
2022/05/05 MySQL
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python