Sfoglia il codice sorgente

Merge branch 'master' of http://es-lab.de:60080/ateubert/Labventure

Alexander Teubert 7 anni fa
parent
commit
a7837e221d
1 ha cambiato i file con 66 aggiunte e 0 eliminazioni
  1. 66 0
      Maze.py

+ 66 - 0
Maze.py

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