Add main generation loop
This commit is contained in:
		@@ -100,3 +100,28 @@ class Generator:
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user