Ziel ist ein Programm, welches ein Labyrinth erstellt und es dem Spieler erlaubt, sich im Labyrinth zu bewegen. Er gewinnt, wenn er den Ausgang erreicht.

Maze.py 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import sys
  2. import random
  3. # Groesse des Labyrinths
  4. width = 39
  5. height = 23
  6. # Labyrinth
  7. maze = dict()
  8. # Display the maze
  9. def display_maze():
  10. for y in range(0, height):
  11. for x in range(0, width):
  12. if maze[x][y] == 0:
  13. sys.stdout.write(" ")
  14. else:
  15. sys.stdout.write("[]")
  16. sys.stdout.write("\n")
  17. # Initialisiere das Labyrinth
  18. def init_maze():
  19. for x in range(0, width):
  20. maze[x] = dict()
  21. for y in range(0, height):
  22. maze[x][y] = 1
  23. # eigentliche Generierung / Labyrinth wird geformt
  24. def carve_maze(x, y):
  25. dir = random.randint(0, 3)
  26. count = 0
  27. while count < 4:
  28. dx = 0
  29. dy = 0
  30. if dir == 0:
  31. dx = 1
  32. elif dir == 1:
  33. dy = 1
  34. elif dir == 2:
  35. dx = -1
  36. else:
  37. dy = -1
  38. x1 = x + dx
  39. y1 = y + dy
  40. x2 = x1 + dx
  41. y2 = y1 + dy
  42. if x2 > 0 and x2 < width and y2 > 0 and y2 < height:
  43. if maze[x1][y1] == 1 and maze[x2][y2] == 1:
  44. maze[x1][y1] = 0
  45. maze[x2][y2] = 0
  46. carve_maze(x2, y2)
  47. count = count + 1
  48. dir = (dir + 1) % 4
  49. # Labyrinth wird generiert
  50. def generate_maze():
  51. random.seed()
  52. maze[1][1] = 0
  53. carve_maze(1, 1)
  54. maze[1][0] = 0
  55. maze[width - 2][height - 1] = 0
  56. # generieren und ausgeben eines random Labyrinth
  57. init_maze()
  58. generate_maze()
  59. display_maze()