# Critter  Caretaker
# A virtual pet to care for
class Critter(object):
   
    """A virtual pet"""
    def __init__(self, name, hunger = 0, boredom = 0):
        self.name = name
        self.hunger = hunger
        self.boredom = boredom

    # __ denotes private method
    def __pass_time(self,farm):
        self.hunger += 1
        self.boredom += 1
        self.__str__()

    def __str__(self,farmlet):
        print("Hunger is",self.hunger, "Boredom is " ,self.boredom)
        print("Unhappines is ",self.hunger + self.boredom," and Mood is ",self.mood)
       
        
    
    @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.\n")
        self.__pass_time()
        
    
    def eat(self):
        food = int(input("Enter how much food you want to feed your critter: "))
        print("Brruppp.  Thank you.")
        self.hunger -= food
        # hunger = 0 at iniatition
        # self.hunger = self.boredom - food
        if self.hunger < 0:
            self.hunger = 0
        self.__pass_time()
        

    def play(self):
        fun = int(input("Enter how much fun you want your critter to have: "))
        print("Wheee!")
        self.boredom -= fun
        # boredom = 0 at iniatition
        # self.boredom = self.boredom - fun
        if self.boredom < 0:
            self.boredom = 0
        self.__pass_time()
        
class Farm(Critter,hunger = 0,boredom = 0):
#A collection of Critters   
    
    def __init__(farmlet, name):
        for critter in farmlet:
            critter.name = name
            critter.hunger = hunger
            critter.boredom = boredom

    def talk(self,farmlet):             
          for critter in farmlet:
                print(self,farmlet)

    def __str__(farmlet):
        for critter in farmlet:            
          print("Hunger is",critter.hunger, "Boredom is " ,critter.boredom)
          print("Unhappines is ",critter.hunger + critter.boredom," and Mood is ",critter.mood)

    def eat(farmlet):
        for critter in farmlet: 
            food = int(input("Enter how much food you want to feed your critter: "))
            print("Brruppp.  Thank you.")
            farmlet.hunger -= food
            # hunger = 0 at iniatition
            # self.hunger = self.boredom - food
            if farmlet.hunger < 0:
                farmlet.hunger = 0
            farmlet.__pass_time()

def main():
##    crit_name = input("What do you want to name your critter?: ")
##    crit = Critter(crit_name)  
    crit1 = Critter("Sweetie")
    crit2 = Critter("Dave")    
    farmlet = [crit1,crit2]
    farmlet.hunger = 0
    farmlet.boredom = 0
    farm = Farm.__str__(farmlet)
    
    
    choice = None  
    while choice != "0":
        print \
        ("""
        Critter Caretaker
    
        0 - Quit
        1 - Listen to your critter
        2 - Feed your critter
        3 - Play with your critter
        """)
    
        choice = input("Choice: ")
        print()

        # exit
        if choice == "0":
            print("Good-bye.")

        # listen to your critter
        elif choice == "1":
            farm = Farm.__str__(farmlet)
        
        # feed your critter
        elif choice == "2":
            farm = Farm.eat(farmlet)
         
        # play with your critter
        elif choice == "3":
            farm.play(farmlet)

        # some unknown choice
        else:
            print("\nSorry, but", choice, "isn't a valid choice.")





main()
("\n\nPress the enter key to exit.") 
