| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- from enum import Enum
- from color import Color
- from option import Option, OptionCode
- import json
- class StateCode(str, Enum):
- START = "start"
- JOIN_OTHERS = "join_others"
- PICK_COLOR = "pick_color"
- PICK_COLOR_OTHERS = "pick_color_others"
- FIRST_DEAL = "first_deal"
- DEAL = "deal"
- DEAL_OTHER = "deal_other"
- SWAP_CARD = "swap_card"
- SWAP_CARD_PARTNER = "swap_card_partner"
- SWAP_CARD_OTHERS = "swap_card_others"
- PLAY_CARD = "play_card"
- PLAY_CARD_OTHER = "play_card_other"
- PLAYING_CARD = "playing_card"
- PLAYING_CARD_OTHER = "playing_card_other"
- class ErrorCode(str, Enum):
- UNKNOWN_CODE = "unknown_code"
- COLOR_ALREADY_CHOSEN = "color_already_chosen"
- OPTION_NOT_ALLOWED = "option_not_allowed"
- class PlayerState(object):
- def __init__(self, code, **kwargs):
- self.code = StateCode(code)
- self.args = kwargs
- class PlayerError(object):
- def __init__(self, code, **kwargs):
- self.code = ErrorCode(code)
- self.args = kwargs
- class Player(object):
- def __init__(self, color = None, name = None):
- self.color = color
- self.name = name
- self.hand = []
- self.options = []
- self.message = "Even wachten"
- self.set_state(StateCode.START)
- self.error = None
- self.selected_card = None
- self.card_is_changed = False
- self.passed = False
- def check_option(self, option):
- found_option = any(o.isOption(option) for o in self.options)
- if not found_option:
- self.message = f"{option.text} is niet toegestaan. " + self.message
- self.set_error(ErrorCode.OPTION_NOT_ALLOWED, option=option)
-
- return found_option
- def set_state(self, state_code, **kwargs):
- self.state = PlayerState(state_code, **kwargs)
- def set_error(self, error_code, **kwargs):
- if error_code != None:
- self.error = PlayerError(error_code, **kwargs)
- else:
- self.error = None
- class DogEncoder(json.JSONEncoder):
- def default(self, obj):
- if hasattr(obj, '__dict__'):
- return obj.__dict__
- return json.JSONEncoder.default(self, obj)
- if __name__ == "__main__":
- player = Player(Color.BLUE, "Groen")
- player.options = [Option(OptionCode.NEW_GAME, "Nieuw spel", color='green'), Option(OptionCode.JOIN_GAME, "doe mee met een spel")]
- player.set_state(StateCode.PICK_COLOR, other_player_name="Rood")
- print(player.__dict__)
- print(player.options[0].__dict__)
- print(json.dumps(player.__dict__, cls=DogEncoder))
|