Strategická: Dodělání abstraktní třídy pro herní logiku

This commit is contained in:
Jiří Kalvoda 2022-09-12 12:11:31 +02:00
parent 559a43afdc
commit 3cb438254b

View file

@ -1,13 +1,28 @@
from typing import Any, List, Tuple, Union, Optional
class Logic(): logic_by_mode = {}
def __init__(self, teams_count, configuration): def add_logic(cls):
pass logic_by_mode[cls.__name__.lower()] = cls
def zero_state(self): class Logic:
def __init__(self, teams_count: int, configuration: Any):
self.teams_count = teams_count
self.configuration = configuration
def zero_state(self) -> Any:
return {} return {}
def step(self, actions): def step(self, state: Any, actions: List[Optional[Any]], round_id: int) -> Tuple[Any, List[int]]:
pass return {}, [0] * teams_count # new_state, add_points for each team
def validate_step(self, state: Any, team_id: int, action: Any, round_id: int) -> Union[None, Any]:
return None # Bez chyby
# return {"status": "warning", ... } # Drobná chyba, ale tah provedu
# throw Exception("Chybí povinná ...") # Zásadní chyba, tah neuznán
# Když používají našeho klienta, tak by se toto nemělo stát
@add_logic
class Occupy(Logic):
pass
logic_by_mode = {"base": Logic}