[Tutor] Hands-on beginner's project? CORRECTION

bob gailer bgailer at gmail.com
Wed Jun 25 15:32:06 CEST 2008


bob gailer wrote:
> Jacqui wrote:
>> Hi, I'm a total newbie too, and I'm kind of replying to see if my
>> instinct on the whole GOTO thing is correct. It's hard to learn a
>> language without any feedback!
>>
>> I used GW and Color Basic when I was a kid so I know all about GOTO (and
>> it was a mess! I programmed one of those interactive stories in grade 12
>> using it, it took all semester and was anything but elegant!)
>>
>> I would expect with Python, instead of using GOTO you use defined
>> functions.
>>
>> So for instance, you could define chapters as functions
>>
>>
>> def chapter2():
>>     print "You've chosen to leap over the chasm"
>>     print "too bad you forgot you were carrying an anvil"
>>     print "What part of b-bye don't you understand?"
>>   
>
> Even better is to define a Chapter class, with the various properties 
> and methods pertinent thereto, then make each chapter an instance of 
> that class.
>
> class Chapter:
>
>  def __init__(self, desc, ques=None, **actions):
>    self.desc = desc
>    self.ques = ques
>    self.actions = actions
>    self.prompt = ", ".join(actions.keys())
>     def describe(self):
>    print self.desc
>
>  def ask(self):
>    if self.ques:
>      print self.ques
>      for i in range(10):
>        ans = raw_input(self.prompt).lower()
>        next = self.actions.get(ans, None)
>        if next:
>          return next
>        else:
>          print "Invalid response"
>      else:
>        print "Too many failed attempts"
# CORRECTION - indent
> def main():
>  chapters = [None]*11 # allow for 10 chapters starting with 1
>  chapters[1] = Chapter("Ahead of you, you see a chasm.", "Attempt to 
> jump over it?", y=2, n=3)
>  chapters[2] = Chapter("Oops - that anvil is heavy. You die.")
>  chapters[3] = Chapter("Good choice.", "Pick a direction", n=4, s=5)
>  chapters[4] = Chapter("It's cold in here.", "Pick a direction", e=1, 
> w=2)
>  chapters[5] = Chapter("It's hot in here.", "Pick a direction", u=6, d=3)
>  chapters[6] = Chapter("Congratulations - you found the gold.")
>  next = 1
>  while True:
>    chapter = chapters[next]
>    chapter.describe()
>    next = chapter.ask()
>    if not next:
>      print "Game over"
>      break
>
> main()  


-- 
Bob Gailer
919-636-4239 Chapel Hill, NC



More information about the Tutor mailing list