62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
|
"""
|
||
|
迷宫寻路
|
||
|
"""
|
||
|
import random
|
||
|
import sys
|
||
|
|
||
|
WALL = -1
|
||
|
ROAD = 0
|
||
|
|
||
|
ROWS = 10
|
||
|
COLS = 10
|
||
|
|
||
|
|
||
|
def find_way(maze, i=0, j=0, step=1):
|
||
|
"""走迷宫"""
|
||
|
if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0:
|
||
|
maze[i][j] = step
|
||
|
if i == ROWS - 1 and j == COLS - 1:
|
||
|
print('=' * 20)
|
||
|
display(maze)
|
||
|
sys.exit(0)
|
||
|
find_way(maze, i + 1, j, step + 1)
|
||
|
find_way(maze, i, j + 1, step + 1)
|
||
|
find_way(maze, i - 1, j, step + 1)
|
||
|
find_way(maze, i, j - 1, step + 1)
|
||
|
maze[i][j] = ROAD
|
||
|
|
||
|
|
||
|
def reset(maze):
|
||
|
"""重置迷宫"""
|
||
|
for i in range(ROWS):
|
||
|
for j in range(COLS):
|
||
|
num = random.randint(1, 10)
|
||
|
maze[i][j] = WALL if num > 7 else ROAD
|
||
|
maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD
|
||
|
|
||
|
|
||
|
def display(maze):
|
||
|
"""显示迷宫"""
|
||
|
for row in maze:
|
||
|
for col in row:
|
||
|
if col == -1:
|
||
|
print('■', end=' ')
|
||
|
elif col == 0:
|
||
|
print('□', end=' ')
|
||
|
else:
|
||
|
print(f'{col}'.ljust(2), end='')
|
||
|
print()
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""主函数"""
|
||
|
maze = [[0] * COLS for _ in range(ROWS)]
|
||
|
reset(maze)
|
||
|
display(maze)
|
||
|
find_way(maze)
|
||
|
print('没有出路!!!')
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|