def move(index: int): game_state = json.loads(redis_client.get('game_state').decode()) moved = False if not game_state['win']: values = game_state['values'] empty_index = values.index('') movable_indexes = {empty_index - 4, empty_index + 4} if (empty_index + 1) % 4: movable_indexes.add(empty_index + 1) if (empty_index - 1) % 4 != 3: movable_indexes.add(empty_index - 1) if index in movable_indexes: values[empty_index] = values[index] values[index] = '' game_state['values'] = values moved = True game_state['move_count'] += 1 if values[-1] == '': last_value = values[0] win = True for value in values[1:-1]: if value < last_value: win = False break last_value = value game_state['win'] = win if win and DB_ACTIVE: result = Results(move_count=game_state['move_count']) db.session.add(result) db.session.commit() game_state = json.dumps(game_state) if moved: redis_client.set('game_state', game_state) return game_state
def new_game(): values = [i + 1 for i in list(range(15))] random.shuffle(values) values.append('') game_state = json.dumps({ 'values': values, 'move_count': 0, 'win': False, }) redis_client.set('game_state', game_state) return game_state
def new_game(): # Сформируем список из 15 значений (от 1 до 15) values = [i + 1 for i in list(range(15))] # Перемешаем значения списка в случайном порядке random.shuffle(values) # Добавим в конец списка значение, содержащее пустую строку values.append('') # Сформируем JSON-объект с данными о текущей игре game_state = json.dumps({ 'values': values, 'move_count': 0, 'win': False, }) # Сохраним информацию в Redis redis_client.set('game_state', game_state) # Вернём информацию в ответ на запрос return game_state