Python随机产生迷宫生成算法源码,python算法,用Python语言可以实
Python随机产生迷宫生成算法源码,python算法,用Python语言可以实
用Python语言可以实现许多程序的生成与解密,今天为大家提供的代码是Python随机产生迷宫生成算法源码。这是一个考验你python教程,学习的数学逻辑算法能力,需要用到Tkinter、random、tkSimpleDialog和sys模块库中的一些方法来共同完成这个Python随机产生迷宫生成算法解密。
Python随机产生迷宫生成算法具体源代码如下(供参考):
import sysfrom random import randrange, shufflefrom Tkinter import *from tkSimpleDialog import askstring sys.setrecursionlimit(100000) BOTTOM_WALL = 0RIGHT_WALL = 1VISITED = 2E,S,W,N = 0, 1, 2, 3DIRECTION = [(0,1),(1,0),(0,-1),(-1,0)] class Maze: def __init__(self, row, col): self.row , self.col = row, col self.maze = [[[True, True, False] for c in range(col)] for r in range(row)] self.makepath(randrange(row), randrange(col)) def makepath(self, r, c, direct = None): maze = self.maze maze[r][c][VISITED] = True if direct == N: maze[r][c][BOTTOM_WALL] = False if direct == S: maze[r-1][c][BOTTOM_WALL] = False if direct == W: maze[r][c][RIGHT_WALL] = False if direct == E: maze[r][c-1][RIGHT_WALL] = False directs = [] if r > 0: directs.append(N) if r < self.row - 1: directs.append(S) if c > 0: directs.append(W) if c < self.col - 1: directs.append(E) shuffle(directs) for d in directs: dr, dc = DIRECTION[d] if not maze[r+dr][c+dc][VISITED]: self.makepath(r+dr, c+dc, d) def draw(self, size, canvas): d = 5 canvas.config(width = d*2+self.col*size, height = d*2+self.row*size) line = canvas.create_line line(d,d,self.col*size+d,d) line(d,d,d,self.row*size+d) #www.iplaypy.com for r in range(self.row): for c in range(self.col): if self.maze[r][c][BOTTOM_WALL]: line(c*size+d, r*size+size+d, c*size+size+d, r*size+size+d) if self.maze[r][c][RIGHT_WALL]: line(c*size+size+d, r*size+d, c*size+size+d, r*size+size+d) root = Tk()root.title("Maze")canvas = Canvas(root)canvas.pack()size = askstring("Maze size", "Please Maze size", initialvalue="25 25")size = [int(x) for x in size.split()]Maze(*size).draw(10, canvas)root.mainloop()
Python其它算法相关文章推荐:
1、Python计算n*n网格生成树数目的方法
2、Python实现的几个常见的排序算法
3、Python实现自动扫雷游戏的方法源码
提示:以上Python源码程序所产生的迷宫中任意两点之间都应该可以走通的。
编橙之家文章,
相关内容
- Python方法如何将普通IP转换为十进制IP,python十进制,P
- Python组合生成与数量计算的实现方法,python组合数量计
- Python实现Windows自动切换代理的方法,python自动切换,本
- Python常见排序算法实现与测速源码,python测速,Python常见
- Python统计代码行数的快捷方法,python统计行数,想知道一
- 如何用Python方法获取图片的准确尺寸,,Python如何获取图
- 把Gmail邮件转发到gtalk的Python方法,gtalkpython,用Python方法
- Python取出指定文本中出现频率最大值的方法,python最大
- 如何用Python来计算已经过去的时间,python已经过去,如何
- Python指定目录递归遍历源码示例,python递归,本文是关于
评论关闭