def administrate_game(self): if not self.network_player: return ['player1'] board = empty_board() referee = GoReferee([self.default_player, self.network_player]) out = referee.play_game() self.close_server() return out
def play_game(self, a, b): player1 = self.players[a] try: player1.receive_stone(StoneEnum.BLACK) except CloseConnectionException: self.update_score(b, a) return player2 = self.players[b] try: player2.receive_stone(StoneEnum.WHITE) except CloseConnectionException: self.update_score(a, b) return ref = GoReferee([player1, player2]) winners, _ = ref.play_game() winner = get_winner(winners) print("-- {} advances".format(winner)) if winner == self.names[a]: self.update_score(a, b) else: self.update_score(b, a)
def play_game(self, a, b): player1 = self.players[a] try: player1.receive_stone(StoneEnum.BLACK) except CloseConnectionException: self._update_score(b, a) self._update_score_cheater(a) self.cheaters.append(self.names[a]) self._replace_cheater(a) return player2 = self.players[b] try: player2.receive_stone(StoneEnum.WHITE) except CloseConnectionException: self._update_score(a, b) self._update_score_cheater(b) self.cheaters.append(self.names[b]) self._replace_cheater(b) self.players[a].end_game() return ref = GoReferee([player1, player2]) winners, was_cheater = ref.play_game() winner_name = get_winner(winners) winner_index = self._get_player_index(winner_name) loser_name = self._get_loser(winner_name, [player1, player2]) loser_index = self._get_player_index(loser_name) # update score first self._update_score(winner_index, loser_index) # check if cheater, edit points_arr and replace player if there was a cheater if was_cheater != None: self._update_score_cheater(loser_index) self.cheaters.append(loser_name) self._replace_cheater(loser_index)
from stone import StoneEnum, make_stone from go_player_file import GoPlayerFile from go_player import GoPlayerContract from go_referee import GoReferee from go_ref_formatter import format_obj from referee_formatter import format_pretty_json if __name__ == "__main__": objs = json_parse_stdin() ## Initialize Stones, Points names, points = objs[:2], [parse_move(x) for x in objs[2:]] board = Board([[make_stone(None) for i in range(BOARD_DIM)] for j in range(BOARD_DIM)]) ## Initialize Players inner_player1 = GoPlayerFile(points[::2]) player1 = GoPlayerContract(inner_player1) player1.register(names[0]) player1.receive_stone(StoneEnum.BLACK) inner_player2 = GoPlayerFile(points[1::2]) player2 = GoPlayerContract(inner_player2) player2.register(names[1]) player2.receive_stone(StoneEnum.WHITE) ## Initialize Go Ref go_referee = GoReferee([player1, player2]) output = go_referee.play_game() raw_output = list(map(format_obj, output)) print(format_pretty_json(raw_output))