| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- """
- 迷宫寻路
- """
- 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()
|