[Tutor] Problem

David Merrick merrickdav at gmail.com
Fri Jun 17 09:28:44 CEST 2011


# Critter Caretaker
# A virtual pet to care for
class Farm(object):
#A collection of Critters

    def talk(self,farm):
        farm.talk()



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,farm):
        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,farm):
        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,farm):
        print("I'm", self.name, "and I feel", self.mood, "now.\n")
        self.__pass_time()


    def eat(self,farm):
        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,farm):
        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()


def main():
##    crit_name = input("What do you want to name your critter?: ")
##    crit = Critter(crit_name)

    crit1 = Critter("Sweetie")
    crit2 = Critter("Dave")
    farm = [crit1,crit2]

    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":
            self.talk()

        # feed your critter
        elif choice == "2":
            crit.eat()

        # play with your critter
        elif choice == "3":
            crit.play()

        # some unknown choice
        else:
            print("\nSorry, but", choice, "isn't a valid choice.")





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

Critter Caretaker

        0 - Quit
        1 - Listen to your critter
        2 - Feed your critter
        3 - Play with your critter

Choice: 1

Traceback (most recent call last):
  File "D:\David\Python\programs\critter_farm2.py", line 118, in <module>
    main()
  File "D:\David\Python\programs\critter_farm2.py", line 100, in main
    self.talk()
NameError: global name 'self' is not defined
>>>

-- 
Dave Merrick

merrickdav at gmail.com

Ph   03 3423 121
Cell 027 3089 169
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110617/b54fe58a/attachment.html>


More information about the Tutor mailing list