Exemplo n.º 1
0
    def test_invalid_protocol(self):
        player1 = GoPlayerBase()
        self.assertRaisesAny(player1.receive_stone, StoneEnum.BLACK)

        player2 = GoPlayerBase()
        player2.register()
        history = get_simple_history_3()
        self.assertRaisesAny(player2.choose_move, history)

        player3 = GoPlayerBase()
        self.assertRaisesAny(player3.choose_move, history)
Exemplo n.º 2
0
def init_referee():
    go_ref = GoReferee(player1=GoPlayerBase("player1"),
                       player2=GoPlayerBase("player2"))
    return go_ref
Exemplo n.º 3
0
from constants import BLACK_STONE, WHITE_STONE
from referee_formatter import format_pretty_json
from go_referee import GoReferee
from play_parser import format_input
from go_player_base import GoPlayerBase


def execute_input(play, referee):
    input_play = format_input(play)
    return referee.execute_move(input_play)


if __name__ == "__main__":
    objs = json_parse_stdin()
    output = []
    referee = GoReferee(player1=GoPlayerBase(objs[0]),
                        player2=GoPlayerBase(objs[1]))
    output.append(BLACK_STONE)
    output.append(WHITE_STONE)

    for obj in objs[2:]:

        raw_out = execute_input(obj, referee)
        output.append(raw_out)

        if referee.game_over:
            if (not referee.winner_declared):
                output.append(referee.get_winners())
                referee.winner_declared = True
            else:
                break
Exemplo n.º 4
0
sys.path.append('../../../4/4.1/src/')
from point import get_raw
from json_parser import json_parse_stdin
from obj_parser import parse_boards, parse_stone
from constants import REGISTER, RECEIVE, MOVE
from referee_formatter import format_pretty_json
from go_player_base import GoPlayerBase


def execute_input(player, arr):
    if arr[0] == REGISTER:
        return player.register()
    elif arr[0] == RECEIVE:
        stone = parse_stone(arr[1])
        player.receive_stone(stone.get_type())
    elif arr[0] == MOVE:
        boards = parse_boards(arr[1])
        output = player.choose_move(boards)
        if isinstance(output, str):
            return output
        return get_raw(output)
    else:
        raise Exception("Invalid name given to execute input")


if __name__ == "__main__":
    player = GoPlayerBase()
    objs = json_parse_stdin()
    output = filter(lambda x: x, [execute_input(player, obj) for obj in objs])
    print(format_pretty_json(list(output)))
Exemplo n.º 5
0
def init_player():
    player = GoPlayerBase()
    player.register()
    player.receive_stone(StoneEnum.BLACK)
    return player
Exemplo n.º 6
0
    def test_receive_stone(self):
        player1 = GoPlayerBase("player1")
        player1.register()
        self.assertEqual(None, player1.stone_type)
        player1.receive_stone(StoneEnum.BLACK)
        self.assertEqual(StoneEnum.BLACK, player1.stone_type)

        player2 = GoPlayerBase("player2")
        player2.register()
        self.assertEqual(None, player2.stone_type)
        player2.receive_stone(StoneEnum.WHITE)
        self.assertEqual(StoneEnum.WHITE, player2.stone_type)
Exemplo n.º 7
0
 def test_register(self):
     player = GoPlayerBase()
     self.assertEqual("default_player", player.register())