import random from common.constants import COLUMNS, ROWS class Spawner: def __init__(self, map): self.map = map def __is_free_field(self, field): return field in ['g', 's', ' '] def spawn_in_area(self, objects: list, spawn_area_pos_row=0, spawn_area_pos_column=0, spawn_area_width=0, spawn_area_height=0, size=1): spawned_objects_count = 0 while spawned_objects_count != len(objects): x = random.randint(0, spawn_area_height) + spawn_area_pos_row y = random.randint(0, spawn_area_width) + spawn_area_pos_column if x < ROWS - 1 and y < COLUMNS - 1 and self.__is_free_field(self.map[x][y]): for i in range(size): for j in range(size): self.map[x - i][y - j] = objects[spawned_objects_count] spawned_objects_count += 1 def spawn_where_possible(self, objects: list): spawned_objects_count = 0 while spawned_objects_count != len(objects): x = random.randint(0, ROWS - 1) y = random.randint(0, COLUMNS - 1) if self.__is_free_field(self.map[x][y]): self.map[x][y] = objects[spawned_objects_count] spawned_objects_count += 1