|
@ -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} |
|
|
|
|
|