本文实例为大家分享了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