def post(self): game_id = getGameIdByRequest(self.request) player_id = getUserIdByRequest(self.request) cur_game_record = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id = :1", game_id).get() if not cur_game_record: self.handle_exception('POST request to gameprocess: no game with such game_id', True) return cur_game = cur_game_record.unPack() x = int(self.request.get('x')) y = int(self.request.get('y')) if cur_game.turn == 0 and cur_game.first_player_uid == player_id or\ cur_game.turn == 1 and cur_game.second_player_uid == player_id: if cur_game.is_ended: self.response.out.write('cannot') return can_move = cur_game.makeMove(x, y) cur_game_record.pack(cur_game) cur_game_record.put() if not can_move: self.response.out.write('cannot') return self.response.out.write('can ') self.response.out.write(' ' + ('X' if cur_game.turn else 'O') + ' ') if cur_game.is_ended: self.response.out.write(' ended ' + cur_game.getWinningString()) else: self.response.out.write(' not_ended') else: self.response.out.write('cannot')
def post(self): game_id = getGameIdByRequest(self.request) player_id = getUserIdByRequest(self.request) cur_game_record = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id = :1", (game_id)).get() if not cur_game_record: self.error(301) return cur_game = cur_game_record.unPack() opponent = db.GqlQuery("SELECT * FROM PlayerRecord WHERE record_of_uid = :1", cur_game.first_player_uid + cur_game.second_player_uid - player_id).get() if opponent.record_of_last_online < time.mktime(time.gmtime()) - DIFF_TIME: self.response.out.write('opponent_offline') return #self.response.out.write(cur_game.getPlayerGameStatus(1 if cur_game.first_player_uid == player_id else 0)) #return if cur_game.turn == 0 and cur_game.first_player_uid == player_id or\ cur_game.turn == 1 and cur_game.second_player_uid == player_id: if cur_game.is_ended: self.response.out.write('lose ' + cur_game.getWinningString()) else: self.response.out.write('move') else: if cur_game.is_ended: self.response.out.write('win ' + cur_game.getWinningString()) else: self.response.out.write('not_move')
def post(self): game_id = getGameIdByRequest(self.request) player_id = getUserIdByRequest(self.request) cur_game_record = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id = :1", (game_id)).get() if not cur_game_record: self.error(301) return cur_game = cur_game_record.unPack() if cur_game.last_move != None and cur_game.last_move[0] == 1 and cur_game.first_player_uid == player_id or\ cur_game.last_move != None and cur_game.last_move[0] == 0 and cur_game.second_player_uid == player_id: self.response.out.write(('X' if not cur_game.last_move[0] else 'O') + ' ' + str(cur_game.last_move[1]) + ' ' + str(cur_game.last_move[2]) + ' ')
def post(self): # Update last online cur_uid = int(self.request.cookies.get('uid', None)) if cur_uid: cur_query = db.GqlQuery("SELECT * FROM PlayerRecord " + "WHERE record_of_uid = :1", cur_uid) cur_player_record = cur_query.get() if not cur_player_record: return cur_player_record.record_of_last_online = time.mktime(time.gmtime()) cur_player_record.put() # Last online updated mode = self.request.get('mode', None) if not mode: self.handle_exception('POST to playing: bad mode\n', True) game_id = getGameIdByRequest(self.request) if db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id = :1", game_id).get() == None: self.handle_exception("POST to playing: no game with such game_id", True) cur_game = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id = :1", game_id).get().unPack() player_position = 0 if cur_game.isFirstPlayer(getUserIdByRequest(self.request)) else 1 if mode == 'waiting': start_time = time.mktime(time.gmtime()) while time.mktime(time.gmtime()) < start_time + MAX_REQUEST_TIME: cur_game = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id =:1", game_id).get().unPack() if cur_game.turn == player_position: self.response.out.write(cur_game.getPlayerGameStatus(player_position)) return time.sleep(DELAY_BETWEEN_PROCESSING) self.response.out.write(cur_game.getPlayerGameStatus(player_position)) elif mode == 'moving': cur_game = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id =:1", game_id).get().unPack() if not cur_game: return "game_error" if cur_game.turn != player_position: self.response.out.write(cur_game.getPlayerGameStatus(player_position)) return x = int(self.request.get('x')) y = int(self.request.get('y')) query = db.GqlQuery("SELECT * FROM GameRecord WHERE record_of_game_id =:1", game_id) for q in query: q.delete() cur_game.makeMove(x, y) cur_game_record = game.GameRecord() cur_game_record.pack(cur_game) cur_game_record.put() self.response.out.write(cur_game.getPlayerGameStatus(player_position)) elif mode == 'ask': self.response.out.write(cur_game.getPlayerGameStatus(player_position) + ' ') else: pass