проверь на ошибки и логические несостыковки:import time
import random
import os
from colorama import Fore, Style

def t(string):
    """Функция для плавного вывода текста."""
    for char in string:
        time.sleep(0.03)
        print(char, end="", flush=True)
    print()  # Перенос строки после вывода
def tt(string):
    for char in string:
        time.sleep(0.05)
        print(char, end="", flush=True)
    print()
# Начальные параметры игры
progress = 1  # Начальный прогресс
level = 1  # Уровень персонажа
name = ""  # Имя игрока
escape_chance = 25  # Изначальный шанс увернуться от монстра
floor = 1  # Текущий этаж
MAX_LEVEL = 100  # Максимальный уровень
HP = 50
stamina = 60
attack = 10  # Урон игрока
def god():
    progress = 9999999
    level = 9999999999
    name ='11010000 10011110 11010000 10101000 11010000 10011000 11010000 10010001 11010000 10011010 11010000 10010000'
    escape_chance = 9999999
    floor = 9999999
    MAX_LEVEL = 1000000000
    HP = 9999999999
    stamina = 9999999999
    attack = -1
class Monster:
    """Класс монстра."""
    def __init__(self, level, multiplier=1):
        self.level = level + 5
        self.hp = level * 30 * multiplier  # Здоровье монстра в зависимости от уровня и множителя

def battle(monster):
    """Функция битвы с монстром."""
    global level, HP, stamina

    t(Fore.RED + f"Вы встретили монстра уровня {monster.level} с {monster.hp} HP!" + Style.RESET_ALL)

    while monster.hp > 0 and HP > 0:
        t("Выберите ваше действие:\n1 - Атаковать\n2 - Увернуться\n3 - Сбежать")
        choice = input('Введите номер вашего выбора: ')

        if choice == '1':  # Атака
            dam = attack * random.randint(1, 3)
            monster.hp -= dam
            t(Fore.GREEN + f'Вы атаковали монстра и нанесли {dam} урона!' + Style.RESET_ALL)
            t(Fore.GREEN + f'У монстра осталось {monster.hp} HP.' + Style.RESET_ALL)

            # Если монстр еще жив, он атакует игрока
            if monster.hp > 0:
                damage = random.randint(5, 15)  # Урон от монстра
                HP -= damage * self.level
                t(Fore.RED + f'Монстр атаковал вас и нанёс вам {damage} урона!')
                t(Fore.RED + f'У вас осталось {HP} HP.' + Style.RESET_ALL)

        elif choice == '2':  # Уворот
            if stamina >= 10:  # Если хватит выносливости
                stamina -= 10
                if random.randint(1, 100) <= escape_chance:
                    t(Fore.CYAN + 'Вы увернулись от атаки монстра!' + Style.RESET_ALL)
                    continue  # Повернуть к началу цикла битвы
                else:
                    t(Fore.RED + 'Уворачивание не получилось!' + Style.RESET_ALL)
                    damage = random.randint(5, 15)
                    HP -= damage
                    t(Fore.RED + f'Монстр атаковал вас и нанёс вам {damage} урона!')
                    t(Fore.RED + f'У вас осталось {HP} HP.' + Style.RESET_ALL)
            else:
                t(Fore.RED + 'Недостаточно выносливости для уворота!' + Style.RESET_ALL)

        elif choice == '3':  # Сбежать
            if random.randint(1, 100) <= escape_chance:
                t(Fore.CYAN + 'Вы успешно сбежали!' + Style.RESET_ALL)
                return  # Выход из функции
            else:
                t(Fore.RED + 'Не удалось сбежать!' + Style.RESET_ALL)
                damage = random.randint(5, 15)
                HP -= damage
                t(Fore.RED + f'Монстр атаковал вас и нанёс вам {damage} урона!')
                t(Fore.RED + f'У вас осталось {HP} HP.' + Style.RESET_ALL)

        else:
            t(Fore.RED + 'Неправильный выбор, попробуйте снова.' + Style.RESET_ALL)

    if HP <= 0:
        game_over()
    else:
        # Если монстр убит
        t(Fore.YELLOW + 'Вы победили монстра!\n' + Style.RESET_ALL)
        level_up(monster.level)
        if floor == 2:
            two_way_round()
        else:
            way_round()

def game_over():
    """Функция обработки окончания игры."""
    t(Fore.RED + "Вы погибли! Игра окончена." + Style.RESET_ALL)
    game_over_menu()

def level_up(monster_level):
    """Увеличение уровня персонажа после победы над монстром."""
    global level, HP, stamina, attack
    level += 1
    HP += 20  # Увеличение здоровья
    stamina += 15  # Увеличение выносливости
    attack += 10
    t(Fore.YELLOW + f'Вы повышаете уровень до {level}! Ваше здоровье: {HP}, ваша стамина: {stamina}, ваша атака: {attack}.' + Style.RESET_ALL)

def get_save_file_name(name):
    """Получение имени файла для сохранения на основе имени персонажа."""
    save_number = 1
    while True:
        file_name = f'{name}_{save_number}.txt'
        if not os.path.exists(file_name):
            return file_name
        save_number += 1

def save_progress():
    """Сохранение текущего прогресса игры."""
    file_name = get_save_file_name(name)
    with open(file_name, 'w', encoding='utf-8') as f:
        f.write(f"{name}\n{level}\n{progress}\n{escape_chance}\n{floor}\n{HP}\n{stamina}\n{attack}")
    t(Fore.YELLOW + f'Прогресс сохранен в {file_name}.' + Style.RESET_ALL)

def load_progress(file_name):
    """Загрузка сохраненного прогресса."""
    global level, progress, name, escape_chance, floor, HP, stamina, attack
    try:
        with open(file_name, 'r', encoding='utf-8') as f:
            name = f.readline().strip()
            level = int(f.readline().strip())
            progress = int(f.readline().strip())
            escape_chance = int(f.readline().strip())
            floor = int(f.readline().strip())
            HP = int(f.readline().strip())
            stamina = int(f.readline().strip())
            attack = int(f.readline().strip())
        return name
    except FileNotFoundError:
        return None
    except ValueError:
        t(Fore.RED + 'Ошибка при загрузке сохранения. Пожалуйста, начните новую игру.\n' + Style.RESET_ALL)
        return None

def choose_save_file():
    """Выбор файла сохранения."""
    while True:
        t("Доступные сохранения:")
        files = [f for f in os.listdir() if f.endswith('.txt') and f.count('_') > 0]
        if not files:
            t(Fore.RED + 'Нет доступных сохранений.' + Style.RESET_ALL)
            return None
        for index, file in enumerate(files, start=1):
            t(f"{index}. {file}")
        
        choice = input('Выберите номер файла сохранения: ')
        try:
            save_index = int(choice) - 1
            if save_index in range(len(files)):
                return files[save_index]
            else:
                t(Fore.RED + 'Неправильный выбор, попробуйте снова.' + Style.RESET_ALL)
        except ValueError:
            t(Fore.RED + 'Пожалуйста, введите число.' + Style.RESET_ALL)

def count_saves():
    """Подсчет количества доступных сохранений."""
    files = [f for f in os.listdir() if f.endswith('.txt') and f.count('_') > 0]
    return len(files)

def delete_save_file(file_name):
    """Удаление указанного файла сохранения."""
    try:
        os.remove(file_name)
        tt(Fore.YELLOW + f'Сохранение {file_name} успешно удалено.' + Style.RESET_ALL)
    except Exception as e:
        t(Fore.RED + f'Ошибка при удалении сохранения: {e}' + Style.RESET_ALL)


def delete_all_saves():
    """Удаление всех файлов сохранения."""
    files = [f for f in os.listdir() if f.endswith('.txt') and f.count('_') > 0]
    for file in files:
        os.remove(file)
    t(Fore.YELLOW + 'Все сохранения успешно удалены.' + Style.RESET_ALL)

def manage_saves():
    """Меню управления сохранениями."""
    while True:
        t("Управление сохранениями:\n")
        t(f"Количество доступных сохранений: {count_saves()}")
        t("1 - Удалить одно сохранение\n2 - Удалить все сохранения\n3 - Вернуться в главное меню")
        choice = input("Выберите действие: ")

        if choice == '1':
            save_file_name = choose_save_file()
            if save_file_name:
                delete_save_file(save_file_name)
                start_menu()
        elif choice == '2':
            confirm = input(Fore.RED + "Вы уверены, что хотите удалить все сохранения? (да/нет): " + Style.RESET_ALL)
            if confirm.lower() in ['да', 'yes', 'yes ', 'да ', 'Да', 'ДА', 'Yes', 'YES']:
                delete_all_saves()
                start_menu()
        elif choice == '3':
            start_menu()
        else:
            t(Fore.RED + 'Ошибка: Неправильный выбор. Попробуйте снова.' + Style.RESET_ALL)
            manage_saves()

def increase_level():
    """Увеличение уровня персонажа и шанса увернуться от монстра."""
    global level, escape_chance, HP, stamina, attack
    if level < MAX_LEVEL:  # Проверка максимального уровня
        level += 1
        HP += 10
        stamina += 10
        attack += 5
        escape_chance = min(100, escape_chance + 5)
        tt(Fore.YELLOW + f'Ваш уровень повышен до {level}!' + Style.RESET_ALL)
        tt(Fore.YELLOW + f'Шанс увернуться от монстра увеличен до {escape_chance}%!' + Style.RESET_ALL)
        tt(Fore.YELLOW + f'Ваше здоровье повышено до {HP}!' + Style.RESET_ALL)
        tt(Fore.YELLOW + f'Ваша стамина повышена до {stamina}!' + Style.RESET_ALL)
        tt(Fore.YELLOW + f'Ваша атака повышена до {attack}!' + Style.RESET_ALL)
    else:
        tt(Fore.RED + 'Вы достигли максимального уровня!\nДальнейшее повышение уровня невозможно.' + Style.RESET_ALL)

def view_stats():
    """Просмотр статистики персонажа."""
    global name  # Объявляем переменную name как глобальную
    t(f'Имя: {name}')
    t(f'Уровень: {level}')
    t(f'Прогресс: {progress}')
    t(f'Шанс увернуться: {escape_chance}%')
    t(f'Этаж: {floor}')
    t(f'Здоровье: {HP}')
    t(f'Стамина: {stamina}')
    t(f'Атака: {attack}')

    while True:
        t('Выберите действие:\n1 - Вернуться в главное меню\n2 - Снова выбрать путь\n3 - Выйти из игры\n4 - Загрузить сохранение\n5 - Управление сохранениями\n')
        choice = input('Введите номер вашего выбора: ')
        if choice == '1':
            start_menu()
            break
        elif choice == '2':
            if floor == 1:
                way_round()
            else:
                two_way_round()
            break
        elif choice == '3':
            exit(0)
        elif choice == '4':
            save_file_name = choose_save_file()
            if save_file_name:
                load_progress(save_file_name)
                t(Fore.YELLOW + f'Добро пожаловать обратно, {name}!' + Style.RESET_ALL)
                way_round()
            break
        elif choice == '5':
            manage_saves()  # Вызов управления сохранениями
            break
        else:
            t('Ошибка: Неправильный выбор. Попробуйте снова.\n')

def two_passage():
    """Случайный выбор пути для игрока на втором этаже."""
    r = random.choices([1, 2, 3, 4], weights=[35, 59, 15, 1])[0]
    if r == 1:
        two_way_bad()  
    elif r == 2:
        two_way_norm()  
    elif r == 3:
        two_way_good()
    elif r == 4:
        way_two_flor() 

def way_two_flor():
    """Специфическое действие для второго этажа."""
    tt(Fore.BLUE + "Вы на втором этаже. Здесь находится магическая комната, где вы можете улучшить свои навыки." + Style.RESET_ALL)
    choice = input(Fore.BLUE + "Хотите улучшить свои навыки? (да/нет): " + Style.RESET_ALL)
    if choice.lower() in ['да', 'yes']:
        increase_level()  # Увеличиваем уровень персонажа
        tt(Fore.GREEN + "Ваши навыки будут улучшены!" + Style.RESET_ALL)
    else:
        tt(Fore.YELLOW + "Вы решили не улучшать свои навыки." + Style.RESET_ALL)
        two_passage()

def two_way_round():
    """Выбор пути для игроков на втором этаже."""
    global progress, floor
    while True:  
        t(Fore.LIGHTCYAN_EX + "Выберите путь:\n1 - направо\n2 - вперед\n3 - налево\n4 - посмотреть статистику\n5 - сохранить прогресс" + Style.RESET_ALL)
        choice = input(Fore.LIGHTCYAN_EX + 'Введите номер вашего выбора: ' + Style.RESET_ALL)
        if choice in ['1', '2', '3']:
            if choice == '1':
                tt('Вы выбрали правый проход на втором этаже.')
                two_passage()
            elif choice == '2':
                tt('Вы выбрали проход вперед на втором этаже.')
                two_passage()
            elif choice == '3':
                tt('Вы выбрали левый проход на втором этаже.')
                two_passage()

            progress += 1
            
            if progress % 5 == 0:
                increase_level()

            # Проверка на достижение 20 прогрессов
            if progress % 20 == 0:
                choice = input(Fore.LIGHTBLACK_EX + 'Вы нашли лестницу вверх! Хотите подняться на следующий этаж? (да/нет): ' + Style.RESET_ALL)
                if choice.lower() in ['да', 'yes']:
                    floor += 1  # Увеличиваем этаж
                    tt(f'Вы поднялись на этаж {floor}.\n')
                    two_passage()  # Продолжаем выбирать путь на новом этаже

            two_passage()  # Случайный выбор пути на втором этаже
            break
        elif choice == '4':
            view_stats()  
            continue
        elif choice == '5':
            save_progress()  
            continue
        else:
            t('Ошибка: Неправильный выбор. Попробуйте снова.\n')
def end():
    t(Fore.MAGENTA + 'вы достигли конца лабиринта, вы хотите выйти?\nда\нет:\n')
    a=input()
    if a.lower() in ['да', 'yes', 'yes ', 'да ', 'Да', 'ДА', 'Yes', 'YES']:
        tt(Fore.LIGHTMAGENTA_EX + 'Прощайте......' + Style.RESET_ALL)
        exit(0)
def god_dead():
    game_over()
def god_end():
    end()
def god_fatal_errore():
    for _ in range(1000):
        t(Fore.RED + "FATAL_ERROR\n" + Style.RESET_ALL)
def god_passage():
    """Случайный выбор пути для игрока."""
    r = random.choices([1, 2, 3], weights=[10, 1, 69])[0]
    if r == 1:
        god_dead()  
    elif r == 2:
        god_fatal_errore()  
    elif r == 3:
        god_end() 
def round_god():
    global progress, floor
    while True:  
        t(Fore.RED + "Выберите путь:\n1 - направо\n2 - вперед\n3 - налево\n4 - посмотреть статистику\n5 - сохранить прогресс" + Style.RESET_ALL)
        choice = input(Fore.RED + 'Введите номер вашего выбора: ' + Style.RESET_ALL)
        if choice in ['1', '2', '3']:
            if choice == '1':
                tt(Fore.RED + 'Вы выбрали правый проход.' + Style.RESET_ALL)
            elif choice == '2':
                tt(Fore.RED + 'Вы выбрали проход вперед.' + Style.RESET_ALL)
            elif choice == '3':
                tt(Fore.RED + 'Вы выбрали левый проход.' + Style.RESET_ALL)

            progress += 1
            
            if progress % 5 == 0:
                increase_level()
            if progress % 20 == 0:
                choice = input(Fore.RED + 'Вы нашли лестницу вверх! Хотите подняться на следующий этаж? (да/нет): ' + Style.RESET_ALL)
                if choice.lower() in ['да', 'yes']:
                    floor += 1  # Увеличиваем этаж
                    tt(Fore.RED + f'Вы поднялись на этаж {floor}.\n')
                    god_passage()  

            
            if floor >=100000:
                god_round()  
            else:
                passage()  # Обычные действия

            break
        elif choice == '4':
            view_stats()  
            continue
        elif choice == '5':
            save_progress()  
            continue
        else:
            t(Fore.RED + 'Ошибка: Неправильный выбор. Попробуйте снова.\n' + Style.RESET_ALL)
def way_round():
    """Выбор пути игроком."""
    global progress, floor
    while True:  
        t("Выберите путь:\n1 - направо\n2 - вперед\n3 - налево\n4 - посмотреть статистику\n5 - сохранить прогресс")
        choice = input('Введите номер вашего выбора: ')
        if choice in ['1', '2', '3']:
            if choice == '1':
                tt('Вы выбрали правый проход.')
            elif choice == '2':
                tt('Вы выбрали проход вперед.')
            elif choice == '3':
                tt('Вы выбрали левый проход.')

            progress += 1
            
            if progress % 5 == 0:
                increase_level()

            # Проверка на достижение 20 прогрессов
            if progress % 20 == 0:
                choice = input(Fore.LIGHTBLACK_EX + 'Вы нашли лестницу вверх! Хотите подняться на следующий этаж? (да/нет): ' + Style.RESET_ALL)
                if choice.lower() in ['да', 'yes']:
                    floor += 1  # Увеличиваем этаж
                    tt(f'Вы поднялись на этаж {floor}.\n')
                    two_passage()  # Переход на второй этаж

            # Проверка, если игрок на втором этаже
            if floor == 2:
                way_two_flor()  # Вызываем специфическую функцию для второго этажа
                two_way_round()  # И вызываем функцию выбора пути на втором этаже
            else:
                passage()  # Обычные действия

            break
        elif choice == '4':
            view_stats()  
            continue
        elif choice == '5':
            save_progress()  
            continue
        else:
            t('Ошибка: Неправильный выбор. Попробуйте снова.\n')

def way_bad():
    """Выбор плохого пути и взаимодействие с монстром."""
    monster_level = random.randint(level, level * 5)  # Уровень монстра больше или равен уровню игрока
    monster = Monster(monster_level)
    battle(monster)

def two_way_bad():
    """Выборbadного пути и взаимодействие с монстром на втором этаже."""
    monster_level = random.randint(level, level * 5)  # Уровень монстра
    monster = Monster(monster_level, multiplier=2)  # Здоровье в 2 раза больше
    battle(monster)

def way_good():
    """Выбор хорошего пути с находкой сундука."""
    tt(Fore.GREEN + 'Вам повезло, и вы нашли запертый сундук. Поскольку у вас нет ключа, вы просто продолжили путь и обнаружили точно такую же комнату с тремя проходами.' + Style.RESET_ALL)
    increase_level()
    way_round()

def two_way_good():
    """Выбор хорошего пути с комнатой отдыха."""
    tt(Fore.GREEN + 'Вам повезло, и вы нашли комнату, где смогли отдохнуть и восстановить свои силы.\nВы продолжили путь и обнаружили точно такую же комнату с тремя очередными дверями.' + Style.RESET_ALL)
    increase_level()
    two_way_round()

def way_norm():
    """Нормальный путь и переход к следующему выбору."""
    tt('Вы прошли через темный и узкий проход и оказались в точно такой же пещере с ответвлением.\n')
    way_round()

def two_way_norm():
    """Нормальный путь и переход к следующему выбору на втором этаже."""
    tt('Вы прошли через очередной проход и вышли в очередную комнату с тремя очередными дверями.\n')
    two_way_round()

def game_over_menu():
    """Меню окончания игры."""
    while True:
        t('Вы хотите:\n1 - Выйти из игры\n2 - Вернуться в главное меню\n3 - загрузить последнее сохранение')
        choice = input('Введите номер вашего выбора: ')
        if choice == '1':
            t('Выход из игры...\n')
            exit(0)
        elif choice == '2':
            t('Возвращаемся в главное меню...\n')  
            start_menu()  
            break
        elif choice == '3':
            save_file_name = choose_save_file()
            if save_file_name:
                load_progress(save_file_name)  
                t(Fore.YELLOW + 'Добро пожаловать обратно!' + Style.RESET_ALL)
                way_round()
            break
        else:
            t(Fore.RED + 'Ошибка: Неправильный выбор. Попробуйте снова.\n' + Style.RESET_ALL)

def passage():
    """Случайный выбор пути для игрока."""
    r = random.choices([1, 2, 3], weights=[25, 50, 25])[0]
    if r == 1:
        way_bad()  
    elif r == 2:
        way_norm()  
    elif r == 3:
        way_good()  

def start():
    """Начало новой игры."""
    global name  # Объявляем переменную name как глобальную
    t('Введите ваше имя (только на англиском):')
    name = input().strip()
    if name == 'god':
        god()
        t(Fore.RED + f'Ваш уровень: {level}....' + Style.RESET_ALL)
        t(Fore.RED + f'Ваш прогресс: {progress}......' + Style.RESET_ALL)
    t(f'Ваш уровень: {level}, хех.')
    t(f'Ваш прогресс: {progress}, это начало.')
    round_god()  

def start_menu():
    """Главное меню игры."""
    tt("Добро пожаловать!!!!\n")
    time.sleep(0.5)
    t("1. Начать новую игру\n2. Загрузить игру\n3. Управление сохранениями\n4. Выход\n")
    a = input('Выберите: ')
    if a == '1':
        start()  
    elif a == '2':
        save_file_name = choose_save_file()
        if save_file_name:
            load_progress(save_file_name)
            tt(f'Добро пожаловать обратно, {name}!')
            way_round()
        else:
            tt(Fore.RED + 'ОШИБКА' + Style.RESET_ALL)
            start_menu()
    elif a == '3':
        manage_saves()  # Вызов функции управления сохранениями
    elif a == '4':
        t('Выход из игры...\n')
        exit(0)  
    else:
        t('Ошибка: Неправильный выбор.\n')
        start_menu()  

# Запуск главного меню
start_menu()