/
piligrim
/
Python_Django_Learn
Обзор
Документация
Войти
/
piligrim
/
Python_Django_Learn
Код
Запросы
1
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
pull_request
004_OPP.py
183 строки
7 KB
piligrim
004
11 окт 2024, 16:10
11 окт 2024, 16:10
eef14d9
Код
Авторство
О чём код?
import random class Tamagotchi: # Создание класса def __init__(self): # Инициализация self.money = 10 # Переменная для хранения кол-ва монет self.health = 100 # Переменная для хранения количества жизней self.happiness = 100 self.sleep = 100 self.clean = 100 def exit_game(self) -> bool: # Выход из игры и информация print(f"Игра окончена! У вас {self.money} монет. Вы прожили {100 - self.health} дней.") return True def show_info(self) -> None: # Вывод текущего состояния с жизнями счастьем и т.п. print(f'Кол-во денег: {self.money}') print(f'Кол-во жизней {self.health}') print(f'Кол-во счастья {self.happiness}') print(f'Кол-во сна {self.sleep}') print(f'Кол-во чистоты {self.clean}') def play(self) -> None: while self.health > 0: self.show_info() # Показываем текущую информацию о нашем питомце action = input('Выберите действие (Полечиться, Цирк, Спать, Помыться, Игра, Ждать, Выход): ') try: # Обрабатываем наш ввод на наличие ошибок if not action: # Проверяем на то что мы что-то ввели print('Ошибка при вводе. Введите корректное действие.') continue if action == 'Полечиться': self.add_health() print(f'Вы съездили в больницу, ваше здоровье теперь: {self.health}') elif action == 'Ждать': print(f'') elif action == 'Помыться': self.add_clean() print(f'Вы помылись, ваша чистота теперь: {self.clean}') elif action == 'Цирк': self.add_happiness() print(f'Вы сходили в цирк, ваше счастье теперь: {self.happiness}') elif action == 'Спать': self.add_sleep() print(f'Вы поспали, ваш сон теперь: {self.sleep}') elif action == 'Игра': self.play_game() elif action == 'Выход': if self.exit_game(): break else: print('Не распознанное действие') continue self.wait() except ValueError: print('Произошла ошибка!') pass def wait(self) -> None: # Ожидание. Должно срабатывать каждую итерацию цикла и уменьшать показатели self.health -= 1 self.clean -= 3 self.happiness -= 5 self.sleep -= 4 def add_health(self) -> None: # Метод для повышения жизней. if self.money >= 2: # Все действия в игре должны стоить денег if self.health <= 80: self.health += 20 else: self.health = 100 self.money -= 2 else: print('Недостаточно денег!') def add_clean(self) -> None: if self.money >= 2: if self.clean <= 80: self.clean += 20 else: self.clean = 100 self.money -= 2 else: print('Недостаточно денег!') def add_happiness(self) -> None: if self.money >= 2: if self.happiness <= 80: self.happiness += 20 else: self.happiness = 100 self.money -= 2 else: print('Недостаточно денег!') def add_sleep(self) -> None: if self.money >= 2: if self.sleep <= 80: self.sleep += 20 else: self.sleep = 100 self.money -= 2 else: print('Недостаточно денег!') def play_game(self): game = GuessNumber() if game.play(): self.money += game.win_money class Game: def __init__(self, name, rules): self.name = name self.rules = rules self.win_money = 0 def show_name(self): print(f'Вы зашли в игру {self.name}') def show_rules(self): print(self.rules) def play(self): raise NotImplementedError() def exit_game(self): print(f'Вы вышли из {self.name}') return True class GuessNumber(Game): def __init__(self): super().__init__( name='Угадай число', rules='Угадать число за 10 попыток' ) self.secret_number = 0 self.max_attemps = 10 self.attemps = 0 def play(self): self.secret_number = random.randint(1, 100) self.attemps = 0 self.show_name() self.show_rules() self.win_money = 15 while self.max_attemps > self.attemps: try: guess = input("Введите число от 1 до 100: ") if guess == 'exit': return self.exit_game() guess = int(guess) if guess == self.secret_number: print("Молодец, вы угадали число!") self.win_money = 15 return self.exit_game() elif guess > self.secret_number: print('Ваше число больше заданного') elif guess < self.secret_number: print('Ваше число меньше заданного') else: print('Ошибка') return self.exit_game() self.attemps += 1 print(f'Осталось попыток {self.max_attemps - self.attemps}') except ValueError: print('Ошибка, введите правильное число') print(f"Вы проиграли, загаданное число было {self.secret_number}") return 0 game = Tamagotchi() game.play()