import random
import tkinter as tk
from tkinter import simpledialog, messagebox

class TextAdventureGame:
    def __init__(self):
        # Начальный баланс и инвентарь игрока
        self.balance = 250
        self.inventory = {'bananas': 0, 'first_aid_kits': 0, 'revolvers': 0}
        self.actions = []
        self.current_room = 'kitchen'
        self.start_game()

    def start_game(self):
        print("\033[92mДобро пожаловать в текстовую игру!\033[0m")
        self.navigate_to_room()

    def navigate_to_room(self):
        # Переключение между комнатами в зависимости от текущей комнаты
        if self.current_room == 'living_room':
            self.living_room()
        elif self.current_room == 'outside':
            self.outside()
        elif self.current_room == 'kitchen':
            self.kitchen()

    def get_choice(self, prompt, valid_choices):
        # Получение и проверка выбора игрока
        while True:
            try:
                choice = int(input("\033[94m" + prompt + "\033[0m"))
                if choice in valid_choices:
                    return choice
                else:
                    print("\033[91mНеверный выбор, попробуйте снова.\033[0m")
            except ValueError:
                print("\033[91mПожалуйста, введите число.\033[0m")

    def living_room(self):
        # Действия в гостиной
        while True:
            choice = self.get_choice(
                "Вы дома.\n1. Умыться.\n2. Покушать.\n3. Спать.\n4. Выйти на улицу.\nОтвет: ", [1, 2, 3, 4]
            )
            if choice == 1:
                self.wash_face()
            elif choice == 2:
                self.eat()
            elif choice == 3:
                print("\033[94mВы спите...\033[0m")
            elif choice == 4:
                self.current_room = 'outside'
                self.navigate_to_room()
                break

    def outside(self):
        # Действия на улице
        while True:
            choice = self.get_choice(
                "Вы на улице.\n1. Пойти в парк.\n2. Вернуться домой.\nОтвет: ", [1, 2]
            )
            if choice == 1:
                self.visit_park()
            elif choice == 2:
                self.current_room = 'living_room'
                self.navigate_to_room()
                break

    def visit_park(self):
        # Посещение парка с шансом найти аптечку
        print("\033[92mВы находитесь в парке.\033[0m")
        if random.random() < 0.5:  # 50% шанс найти аптечку
            print("\033[96mНашли аптечку!\033[0m")
            self.inventory['first_aid_kits'] += 1
        else:
            print("\033[94mНичего интересного не нашли.\033[0m")

    def wash_face(self):
        # Умывание с шансом найти банан
        if 'washed_face' in self.actions:
            print("\033[94mВы уже умылись.\033[0m")
        else:
            self.actions.append('washed_face')
            if random.random() < 0.4:  # 40% шанс найти банан
                print("\033[96mНашли банан!\033[0m")
                self.inventory['bananas'] += 1
            else:
                print("\033[94mУмылись.\033[0m")

    def eat(self):
        # Действие поедания с шансом найти пистолет
        if random.random() < 0.1:  # 10% шанс найти пистолет
            print("\033[91mНашли пистолет!\033[0m")
            self.inventory['revolvers'] += 1
        self.current_room = 'kitchen'
        self.navigate_to_room()

    def kitchen(self):
        # Действия на кухне
        while True:
            choice = self.get_choice(
                "Вы находитесь в кухне.\n1. Съесть банан.\n2. Проверить инвентарь.\n3. Вернуться в гостиную.\nОтвет: ", [1, 2, 3]
            )
            if choice == 1:
                self.eat_banana()
            elif choice == 2:
                self.check_inventory()
            elif choice == 3:
                self.current_room = 'living_room'
                self.navigate_to_room()
                break

    def eat_banana(self):
        # Поедание банана с шансом на удушье
        if self.inventory['bananas'] > 0:
            self.inventory['bananas'] -= 1
            if random.random() < 0.65:  # 65% шанс умереть от удушья
                print("\033[91mВы умерли от удушья от банана.\033[0m")
                self.end_game("Игра окончена. Вы проиграли.", "LOSE")
            else:
                print("\033[94mВы съели банан.\033[0m")
        else:
            print("\033[94mУ вас нет бананов.\033[0m")

    def check_inventory(self):
        # Проверка инвентаря
        print("\033[94mВаш инвентарь:\033[0m")
        for item, quantity in self.inventory.items():
            print(f"{item}: {quantity}")

    def end_game(self, message, result):
        # Завершение игры
        print(f"\033[93m{message} Результат: {result}\033[0m")
        exit()

if __name__ == "__main__":
    TextAdventureGame()
улучши код.