예제 #1
0
                rewards = tuple(0 for _ in range(n_players))
                done = False
    if h == 3 or s_new.turn == 1:
        next_player = (player + 1) % n_players
        s_new.turn = 0
    else:
        next_player = player
        s_new.turn = 1
    message = f"{player_symbols[player]} {reward_type} " \
              f"with reward {rewards[player]}"
    if render:
        render_(s_new)
    return EnvOutput(s_new, rewards, done, next_player, message)


ttt_env = Env(
    name=env_name,
    n_agents=n_players,
    n_actions=n_actions,
    init_state=lambda: (init_state, 0),
    model=model,
    state_utils=Env.StateUtils(
        hash=_hash,
        get_actions=get_actions,
        get_symmetries=lambda s, a: board.get_symmetries_4(
            s, a, wrapper=lambda na: replace(s, array=na)),
        render_=render_),
    agent_symbols=player_symbols,
    cli_agent=board.get_actor,
)
예제 #2
0
            if not any(s_new.array == -1):
                reward_type = 'draw'
                rewards = rewards_all(0)
                done = True
            else:
                reward_type = 'still_in_game'
                rewards = tuple(0 for _ in range(n_players))
                done = False
    next_player = (player + 1) % n_players
    message = f"{player_symbols[player]} {reward_type} " \
              f"with reward {rewards[player]}"
    if render:
        render_(s_new)
    return EnvOutput(s_new, rewards, done, next_player, message)


wuziqi_env = Env(name=env_name,
                 n_agents=n_players,
                 n_actions=n_actions,
                 init_state=lambda: (init_state, 0),
                 model=model,
                 state_utils=Env.StateUtils(
                     hash=_hash,
                     get_actions=get_actions,
                     get_symmetries=lambda s, a: board.get_symmetries_4(
                         s, a, wrapper=StateWZQ),
                     render_=render_),
                 agent_symbols=player_symbols,
                 cli_agent=board.get_actor,
                 web_agent=WebAgent(h, h).get_actor)
예제 #3
0
            actions = get_actions(s, ag_id)
            grid_w = 2 + round(np.log10(self.w))
            fmt = f"{{: ^{grid_w}}}"
            print(" ", end='')
            for i in range(w):
                if i in actions:
                    s = str(array[i])
                else:
                    s = 'то╛'
                print("|" + fmt.format(s), end='')
            print("|")
            i = int(input("Enter your next move as position number:"))
            return i

        return _actor


conn4_env = Env(
    name=env_name,
    n_agents=n_players,
    n_actions=n_actions,
    init_state=lambda: (init_state, 0),
    model=model,
    state_utils=Env.StateUtils(hash=_hash,
                               get_actions=get_actions,
                               get_symmetries=get_symmetries,
                               render_=render_),
    agent_symbols=player_symbols,
    cli_agent=Conn4CliAgent(h, w).get_actor,
)