Exemple #1
0
    def __init__(self,
                 left_player: Bot,
                 right_player: Bot,
                 mode: Mode = Mode.DEFAULT):
        self.left_player = left_player
        self.right_player = right_player
        self.state = State(left_player.team, right_player.team)

        if mode not in {Mode.DEFAULT, Mode.HILLMAN}:
            print('Wrong mode, install default mode')
            mode = Mode.DEFAULT
        self.rules = Rules(self.state, mode)
Exemple #2
0
    def prepare(self,
                mainChar: Character,
                otherChars: list[Character],
                state: State = None) -> bool:
        """
            Prepares this Event to be triggered, assigning Characters to the Event State if they match.
            If any of the requirements aren't met, returns False, otherwise returns True.
            """
        self.state = State(self.triggerCts,
                           self.baseChance) if not state else state.sub(
                               self.triggerCts, self.baseChance)

        if not self.state.doesCharExist(mainChar):
            return self.prepareBase(mainChar, otherChars)
        else:
            return self.prepareSub(otherChars)
Exemple #3
0
    def work(self):
        # initial state
        state = State()

        draw_state(state, State.board_size)

        print("")

        # start game
        while not state.has_finished():
            counter_to_move = ask_to_choose_counter(state, state.get_turn(),
                                                    self)
            new_state = ask_to_move(state, state.get_turn(), counter_to_move,
                                    self)

            print("")
            print("New State:\n")

            draw_state(new_state, State.board_size)
Exemple #4
0
    def __init__(self, name: str, texts: list[str],
                 checkNamesToArgLists: dict[str, list[list[str]]],
                 effectNamesToArgLists: dict[str, list[list[str]]],
                 sub: list[Event]):
        self.name = name
        self.texts = texts
        self.checkSuites = [
            CheckSuite(checkName, checkNamesToArgLists[checkName])
            for checkName in checkNamesToArgLists
        ]
        self.effectSuites = [
            EffectSuite(effectName, effectNamesToArgLists[effectName])
            for effectName in effectNamesToArgLists
        ]
        self.sub = sub

        self.triggerCts: dict[Character, int] = {}
        self.state = State(self.triggerCts)

        self.baseChance = 100
        if self.name.endswith("default"):
            self.baseChance = 0
Exemple #5
0
def get_win_probability(left_powers: list, right_powers: list, mode: Mode):
    """
    This function gets probability
    of win, if both players should
    choose first alive gladiators
    """
    def get_left_win_prob(cur_state: State):
        if not cur_state.team_left.is_alive():
            return 0
        elif not cur_state.team_right.is_alive():
            return 1
        else:
            state_left_win = cur_state.__copy__()
            state_right_win = cur_state.__copy__()
            rules_left_win = Rules(state_left_win, mode)
            rules_right_win = Rules(state_right_win, mode)

            left_glad = cur_state.team_left[0]
            right_glad = cur_state.team_right[0]
            prob_glad_win = rules_left_win \
                .get_probability_glad_win(left_glad, right_glad)

            rules_left_win.fight(state_left_win.team_left[0],
                                 state_left_win.team_right[0],
                                 mode='test',
                                 winner=Party.LEFT)
            rules_right_win.fight(state_right_win.team_left[0],
                                  state_right_win.team_right[0],
                                  mode='test',
                                  winner=Party.RIGHT)

            return prob_glad_win[0] * get_left_win_prob(rules_left_win.state) \
                   + prob_glad_win[1] * get_left_win_prob(rules_right_win.state)

    left_team = Team(powers=left_powers)
    right_team = Team(powers=right_powers)

    prob_left_win = get_left_win_prob(State(left_team, right_team))
    return prob_left_win, 1 - prob_left_win