本文实例为大家分享了Python深度优先算法生成迷宫,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
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) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/crystal_tyan/article/details/42523861