Source code for colosseumrl.envs.testgame.TestGame

""" Example server environment primarily for testing. """

from typing import Tuple, List, Union, Dict
import numpy as np
from colosseumrl.BaseEnvironment import BaseEnvironment


[docs]class TestGame(BaseEnvironment): @property def min_players(self) -> int: return 2 @property def max_players(self) -> int: return 2
[docs] @staticmethod def observation_names() -> List[str]: return ['state']
@property def observation_shape(self): return {"state", [1]}
[docs] def new_state(self, num_players: int = 1): return np.random.randint(0, 100, (1,)), [0]
[docs] def next_state(self, state: np.ndarray, players: [int], actions: [str]) \ -> Tuple[np.ndarray, List[int], List[float], bool, Union[List[int], None]]: action = int(actions[0]) distance = -np.abs(action - state[0]) print("action: {} state: {} distance: {}".format(action, state, distance)) if action == state[0]: return state, [(players[0] + 1) % self.max_players], [distance], True, players return state, [(players[0] + 1) % self.max_players], [distance], False, None
[docs] def valid_actions(self, state: np.ndarray, player: int) -> [str]: return map(lambda x: str(x), np.arange(100))
[docs] def is_valid_action(self, state: np.ndarray, player: int, action: str) -> bool: return action in self.valid_actions(state, player)
[docs] def state_to_observation(self, state: np.ndarray, player: int) -> Dict[str, np.ndarray]: return {"state": state}