def do_move(self, selected, square, promotion=5): color = self.board.color() move = self.board.move(selected, square, promotion) if self.online == color: data = post(URL_BASE + VALIDATE_MOVE, { 'move_id': self.move_id, 'player_key': self.player_key, 'valid': 'true' if move else 'false' }) return move elif move: move_type = move.type() param = { 'game_id': self.game_id, 'player_key': self.player_key, 'type': move_type } if move_type in [0, 2, 3]: param['move_from'] = tuple_to_chess_notation(selected) param['move_to'] = tuple_to_chess_notation(square) if move_type == 1: #castling param['rook_from'] = tuple_to_chess_notation(move.rook_from()) param['rook_to'] = tuple_to_chess_notation(move.rook_to()) param['king_from'] = tuple_to_chess_notation(selected) param['king_to'] = tuple_to_chess_notation(square) if move_type == 2: #en passant param['eliminated_pawn'] = tuple_to_chess_notation( move.get_eliminated_pawn()) if move_type == 3: #promotion param['promotion_type'] = 3 #queen data = post(URL_BASE + NEW_MOVE, param) self.move_id = data['move']['id'] while self.running: self.do_jit_draw() data = get(URL_BASE + SHOW_MOVE.format(self.move_id)) if data['move']['validation_time']: if not data['move']['legal']: move.undo_update(self.board) return False else: return move sleep(3) return False
SHOW_MOVE, NEW_MOVE, WAITING_MOVE_VALIDATION, VALIDATE_MOVE, NEW_GAME_OVER_REQUEST, WAITING_GAME_OVER_VALIDATION, SHOW_GAME_OVER, SUCCESS, SUCCESS_CODES, ) valid_html_request = lambda url, m, v={}: { (URL_BASE + NEW_GAME): {"player_key": "a", "game_id": 2, "code": 0}, (URL_BASE + JOIN_GAME): {"player_key": "b", "code": 0}, (URL_BASE + SHOW_MOVE.format(1)): {"move": {"validation_time": "2014", "legal": 1}, "code": 0}, (URL_BASE + NEW_MOVE): {"code": 0, "move": {"id": 1}}, (URL_BASE + WAITING_MOVE_VALIDATION): { "code": 0, "move": {"id": 1, "move_type": 0, "movimentations": [{"from": "c1", "to": "c3"}]}, }, (URL_BASE + VALIDATE_MOVE): {"code": 0}, (URL_BASE + NEW_GAME_OVER_REQUEST): {"code": 0, "game_over_request_id": 1}, (URL_BASE + WAITING_GAME_OVER_VALIDATION): {"code": 0}, (URL_BASE + SHOW_GAME_OVER): {"code": 0, "game_over_request": {"validation_time": "2014", "legal": 0}}, }[url] invalid_sent_move = lambda url, m, v={}: { (URL_BASE + NEW_GAME): {"player_key": "a", "game_id": 2, "code": 0}, (URL_BASE + JOIN_GAME): {"player_key": "b", "code": 0}, (URL_BASE + SHOW_MOVE.format(1)): {"move": {"validation_time": "2014", "legal": 0}, "code": 0},