example03.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """
  2. 迷宫寻路
  3. """
  4. import random
  5. import sys
  6. WALL = -1
  7. ROAD = 0
  8. ROWS = 10
  9. COLS = 10
  10. def find_way(maze, i=0, j=0, step=1):
  11. """走迷宫"""
  12. if 0 <= i < ROWS and 0 <= j < COLS and maze[i][j] == 0:
  13. maze[i][j] = step
  14. if i == ROWS - 1 and j == COLS - 1:
  15. print('=' * 20)
  16. display(maze)
  17. sys.exit(0)
  18. find_way(maze, i + 1, j, step + 1)
  19. find_way(maze, i, j + 1, step + 1)
  20. find_way(maze, i - 1, j, step + 1)
  21. find_way(maze, i, j - 1, step + 1)
  22. maze[i][j] = ROAD
  23. def reset(maze):
  24. """重置迷宫"""
  25. for i in range(ROWS):
  26. for j in range(COLS):
  27. num = random.randint(1, 10)
  28. maze[i][j] = WALL if num > 7 else ROAD
  29. maze[0][0] = maze[ROWS - 1][COLS - 1] = ROAD
  30. def display(maze):
  31. """显示迷宫"""
  32. for row in maze:
  33. for col in row:
  34. if col == -1:
  35. print('■', end=' ')
  36. elif col == 0:
  37. print('□', end=' ')
  38. else:
  39. print(f'{col}'.ljust(2), end='')
  40. print()
  41. def main():
  42. """主函数"""
  43. maze = [[0] * COLS for _ in range(ROWS)]
  44. reset(maze)
  45. display(maze)
  46. find_way(maze)
  47. print('没有出路!!!')
  48. if __name__ == '__main__':
  49. main()