From 8a6d23156597a0adf13fa24dbd29dcfebacd3659 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sun, 20 Jul 2025 00:05:28 -0400 Subject: [PATCH] Now the maze has rooms, and was pretty easy to add. --- phase_six.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/phase_six.py b/phase_six.py index aad8167..e46e1b5 100644 --- a/phase_six.py +++ b/phase_six.py @@ -10,9 +10,18 @@ class Map: self.width = width self.height = height grid = self.make_grid() + dead_ends = self.hunt_and_kill(grid) + grid = self.sample_rooms(grid, dead_ends, 4, int(len(dead_ends) * 0.6)) self.hunt_and_kill(grid) self.render_map(grid) + def sample_rooms(self, grid, dead_ends, size, count): + grid = self.make_grid() + for x, y in random.sample(dead_ends, count): + if x < self.width - size and y < self.height - size: + self.make_room(grid, x, y, size) + return grid + def make_grid(self): grid = [] for y in range(0, self.height): @@ -20,6 +29,11 @@ class Map: return grid + def make_room(self, grid, x, y, size): + for row in range(y, y+size): + for col in range(x, x+size): + grid[row][col] = SPACE + def find_coord(self, grid): for y in range(1, self.height, 2): for x in range(1, self.width, 2): @@ -69,10 +83,12 @@ class Map: def hunt_and_kill(self, grid): on_x = 1 on_y = 1 + dead_ends = [] while True: n = self.neighbors(grid, on_x, on_y) if len(n) == 0: + dead_ends.append([on_x, on_y]) t = self.find_coord(grid) if t == None: break on_x, on_y = t[0] @@ -90,6 +106,7 @@ class Map: on_x, on_y = nb_x, nb_y assert self.complete(grid), "Maze is not complete." + return dead_ends def render_map(self, grid):