| 12
 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
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 
 | 
 
 import random
 from draw_maze import *
 from maze_def import *
 from maze import *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 def depth_maze_demo(levels, rows, cols):
 if 0 == levels % 2:
 levels+=1
 if 0 == rows % 2:
 rows+=1
 if 0 == cols % 2:
 cols+=1
 
 maze_map = maze_init_draw(levels,rows,cols)
 
 nowx=1
 nowy=1
 nowz=0
 
 history = [(nowx, nowy, nowz)]
 
 
 while True:
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 return
 if history:
 if maze_map[nowx][nowy][nowz] == CELL_NO_VISIT:
 maze_map[nowx][nowy][nowz] = NOWALL
 check = []
 
 if nowx > 1 and maze_map[nowx-2][nowy][nowz] == CELL_NO_VISIT:
 check.append('L')
 if nowy > 1 and maze_map[nowx][nowy-2][nowz] == CELL_NO_VISIT:
 check.append('F')
 if nowx < cols-2 and maze_map[nowx+2][nowy][nowz] == CELL_NO_VISIT:
 check.append('R')
 if nowy < rows-2 and maze_map[nowx][nowy+2][nowz] == CELL_NO_VISIT:
 check.append('B')
 if nowz < levels-2 and maze_map[nowx][nowy][nowz+2] == CELL_NO_VISIT:
 check.append('U')
 if nowz > 1 and maze_map[nowx][nowy][nowz-2] == CELL_NO_VISIT:
 check.append('D')
 
 if len(check):
 
 
 
 history.append((nowx, nowy, nowz))
 
 move_direction = random.choice(check)
 
 if move_direction == 'L':
 maze_map[nowx-1][nowy][nowz] = NOWALL
 maze_map[nowx-2][nowy][nowz] = NOWALL
 nowx=nowx-2
 if move_direction == 'F':
 maze_map[nowx][nowy-1][nowz] = NOWALL
 maze_map[nowx][nowy-2][nowz] = NOWALL
 nowy=nowy-2
 if move_direction == 'R':
 maze_map[nowx+1][nowy][nowz] = NOWALL
 maze_map[nowx+2][nowy][nowz] = NOWALL
 nowx=nowx+2
 if move_direction == 'B':
 maze_map[nowx][nowy+1][nowz] = NOWALL
 maze_map[nowx][nowy+2][nowz] = NOWALL
 nowy=nowy+2
 if move_direction == 'U':
 if maze_map[nowx][nowy][nowz] == STAIRS_D:
 maze_map[nowx][nowy][nowz] = STAIRS_UD
 else:
 maze_map[nowx][nowy][nowz] = STAIRS_U
 maze_map[nowx][nowy][nowz+1] = NOWALL
 if maze_map[nowx][nowy][nowz+2] == STAIRS_U:
 maze_map[nowx][nowy][nowz+2] = STAIRS_UD
 else:
 maze_map[nowx][nowy][nowz+2] = STAIRS_D
 nowz=nowz+2
 if move_direction == 'D':
 if maze_map[nowx][nowy][nowz] == STAIRS_U:
 maze_map[nowx][nowy][nowz] = STAIRS_UD
 else:
 maze_map[nowx][nowy][nowz] = STAIRS_D
 maze_map[nowx][nowy][nowz-1] = NOWALL
 if maze_map[nowx][nowy][nowz-2] == STAIRS_D:
 maze_map[nowx][nowy][nowz-2] = STAIRS_UD
 else:
 maze_map[nowx][nowy][nowz-2] = STAIRS_U
 nowz=nowz-2
 else:
 
 nowx, nowy, nowz = history.pop()
 
 draw_maze(maze_map, levels, rows, cols, (nowx,nowy,nowz), not history)
 
 time_passed = clock.tick(30)
 
 pygame.display.update()
 return
 
 
 
 if __name__ == "__main__":
 '''main'''
 depth_maze_demo(5, 11, 21)
 
 
 |