class GameInstanceServer(GameInstanceServerPDUCodec, ITCPInd): def __init__(self, clients): shuffle(clients) self.socket_player_white = clients[0] self.socket_player_black = clients[1] self.request = GameInstanceServerTCP(self.socket_player_white, self.socket_player_black, self) self.WHITE_TURN = WHITE_TURN() self.BLACK_TURN = BLACK_TURN() self.boardmodel = BoardModel(8, True) # black player starts according to reversi rules self.state = self.BLACK_TURN self.turn = self.socket_player_black def game_init(self): self.request.send_req(self.socket_player_white, GameClientPDUCodec.connect_ok_pdu(Player.WHITE)) self.request.send_req(self.socket_player_black, GameClientPDUCodec.connect_ok_pdu(Player.BLACK)) initial_board = GameLogic.initial_board_as_affected_positions(8) self.request.send_req(self.socket_player_white, GameClientPDUCodec.update_board_pdu(Player.WHITE, initial_board[0])) self.request.send_req(self.socket_player_white, GameClientPDUCodec.update_board_pdu(Player.BLACK, initial_board[1])) self.request.send_req(self.socket_player_black, GameClientPDUCodec.update_board_pdu(Player.WHITE, initial_board[0])) self.request.send_req(self.socket_player_black, GameClientPDUCodec.update_board_pdu(Player.BLACK, initial_board[1])) self.request.send_req(self.socket_player_black, GameClientPDUCodec.turn_pdu()) def start(self): self.game_init() self.request.run() # input delegated to states def turn_req(self): self.state.turn_req(self) def place_pdu(self, socket, x, y): self.state.place_pdu(self, socket, x, y) def end_game(self): self.state.end_game(self) def error_req(self, socket): self.state.error_req(self, socket) # ITCPInd implementation def recv_ind(self, client, data): print "[GAME INSTANCE] Data indication" (pdu_id, pdu_size, pdu_data) = self.decode(data) print (pdu_id, pdu_size, pdu_data) if pdu_id == PDUCodes.PLACE: self.place_pdu(client, pdu_data[0], pdu_data[1]) elif pdu_id == PDUCodes.CLIENT_QUIT: self.state.disconnection_ind(self, client) else: print "ALGO RARO", data return pdu_size def disconnection_ind(self, client): self.state.disconnection_ind(self, client)
def __init__(self, clients): shuffle(clients) self.socket_player_white = clients[0] self.socket_player_black = clients[1] self.request = GameInstanceServerTCP(self.socket_player_white, self.socket_player_black, self) self.WHITE_TURN = WHITE_TURN() self.BLACK_TURN = BLACK_TURN() self.boardmodel = BoardModel(8, True) # black player starts according to reversi rules self.state = self.BLACK_TURN self.turn = self.socket_player_black