Files
Ninluc a7a3d973a3 Play all maps each generation
Also disabled some too hard maps
2026-10-26 15:53:27 +01:00

35 lines
1.4 KiB
Python

"""
Represents a set of maps in the game. At initialization, it loads the desired maps.
It provides a method to get a number of maps with the difficulty level as close as possible to the desired difficulty level.
"""
from game.mapReader import MapReader
class MapSet:
def __init__(self, mapReader: MapReader, mapNames: list):
self.mapReader = mapReader
self.maps = [self.mapReader.read_map(name) for name in mapNames]
def get_map_by_name(self, name: str):
for map in self.maps:
if map.name == name:
return map
raise ValueError(f"Map with name '{name}' not found in the MapSet.")
def get_map(self, index: int):
if index < 0 or index >= len(self.maps):
raise IndexError("Map index out of range.")
return self.maps[index]
def get_maps(self):
return sorted(self.maps, key=lambda m: m.difficulty)
def get_maps_by_difficulty(self, desired_difficulty: int, num_maps: int):
"""
Returns a list of maps with difficulty levels as close as possible to the desired difficulty level.
If there are not enough maps, it returns all available maps.
"""
if len(self.maps) == 0:
raise ValueError("No maps available in the MapSet.")
sorted_maps = sorted(self.maps, key=lambda m: abs(m.difficulty - desired_difficulty))
return sorted_maps[:num_maps]