Майкл Доусон - Программируем на Python 8 глава задача 4

Напишите программу «Зооферма», в которой будет создано несколько объектов класса Critter, а манипулировать ими всеми можно будет с помощью списка. Теперь пользователь должен заботиться не об одной зверюшке, а обо всех обитателях зоофермы. Выбирая пункт в меню, пользователь выбирает действие, которое хотел бы выполнить со всеми зверюшками: покормить их, поиграть с ними или узнать об их самочувствии. Чтобы программа была интереснее, при создании каждой зверюшки следует назначать ей случайно выбранные уровни голода и уныния.
# Farm Caretaker
# A virtual farm to care for

import random

class Farm(object):
    """A virtual pet"""

    def __init__(self, name):#Метод конструктор
        self.name = name
        self.hunger = random.randint(0, 16)
        self.boredom = random.randint(0, 16)
     
    def __str__(self):#Метод вывода на экран
        rep = 'Name: ' + self.name + '\n' + 'Hunger: ' + str(self.hunger) + '\n' + 'Boredom: ' + str(self.boredom)
        return rep

    def __pass_time(self):#Течение времени
        self.hunger += 1
        self.boredom += 1

    @property
    def mood(self):# Свойство состояния
        unhappiness = self.hunger + self.boredom
        if unhappiness < 5:
            m = "happy"
        elif 5 <= unhappiness <= 10:
            m = "okay"
        elif 11 <= unhappiness <= 15:
            m = "frustrated"
        else:
            m = "mad"
        return m

    def talk(self):#Разговор
        print("I'm", self.name, "and I feel", self.mood, "now.")
        self.__pass_time()

    @staticmethod 
    def number(number=None, c=0, m=0):#Метод для ввода и проверки на
        while c==0:             #ошибки численных значений кормежки и игры
          number=input('How many? Write from 0 to infinity ')
          try:
           m=int(number)
           c=1
          except:
            print('Try again')
       
        if int(number)<0:
          number=0
        else:
          number=m
        return number
         
    def eat(self, food):#Кормежка
        self.hunger -= food
        if self.hunger < 0:
            self.hunger = 0
        self.__pass_time()

    def play(self, fun):#Игра
        self.boredom -= fun
        if self.boredom < 0:
            self.boredom = 0
        self.__pass_time()

def main():#Основная функция
    print('Welcome to the farm! Now you have a cow, a pig and a goat. Let\'s give them names.')
    crit_name = input("What do you want to name your cow?: ")
    cow = Farm(crit_name)
    crit_name = input("What do you want to name your pig?: ")
    pig = Farm(crit_name)
    crit_name = input("What do you want to name your goat?: ")
    goat = Farm(crit_name)

    choice = None
    numb=None
    while choice != "0":
        print \
        ("""
        Farm Caretaker
 
        0 - Quit
        1 - Listen to your livestock
        2 - Feed your livestock
        3 - Play with your livestock
        """)
 
        choice = input("Choice: ")
        print()

        # exit
        if choice == "0":
            print("Good-bye.")

        # listen to your livestock
        elif choice == "1":
            cow.talk()
            print('moo-mooo.\n')
            pig.talk()
            print('oink, oink.\n')
            goat.talk()
            print('ba-a-ba-a.\n')
     
        # feed your livestock
        elif choice == "2":
            numb=Farm.number()
            cow.eat(numb)
            print("Mooo.  Thank you.")
            pig.eat(numb)
            print("Oink.  Thank you.")
            goat.eat(numb)
            print("Baaa.  Thank you.")

        # play with your livestock
        elif choice == "3":
            numb=Farm.number()
            cow.play(numb)
            pig.play(numb)
            goat.play(numb)
            print("Wheee! Wheee! Wheee!")

       #secret
        elif choice =="4":
            print(cow)
            print(pig)
            print(goat)
         # some unknown choice
        else:
            print("\nSorry, but", choice, "isn't a valid choice.")

main()
("\n\nPress the enter key to exit.")

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Майкл Доусон - Программируем на Python 8 глава задача 1

Майкл Доусон - Программируем на Python 3 глава

Майкл Доусон - Программируем на Python 4 глава