Add main generation loop

This commit is contained in:
Charles Peyrat 2021-01-08 03:19:59 +01:00
parent 5579f5d791
commit bb3422f7d8
1 changed files with 25 additions and 0 deletions

View File

@ -100,3 +100,28 @@ class Generator:
return room, doory, doorx return room, doory, doorx
def run(self):
height, width = self.params["height"], self.params["width"]
level = [[Tile.EMPTY for i in range(width)] for j in range(height)]
# the starting room must have no corridor
mem, self.params["corridor"] = self.params["corridor"], 0
starting_room, _, _, _, _ = self.create_random_room()
self.place_room(level, height//2, width//2, 0, 0, starting_room)
self.params["corridor"] = mem
tries, rooms_built = 0, 0
while tries < self.params["tries"] and rooms_built < self.params["max_rooms"]:
room, door_y, door_x, dy, dx = self.create_random_room()
positions = [i for i in range()]
shuffle(positions)
for pos in positions:
y, x = pos // height, pos % width
if self.room_fits(level, y, x, room, door_y, door_x, dy, dx):
self.place_room(level, y, x, door_y, door_x, room)
# post-processing
self.place_walls(level)
return level