[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