text adventure game problem

Dan Bishop danb_83 at yahoo.com
Wed Apr 9 03:25:05 CEST 2008


On Apr 8, 8:01 pm, corvettecra... at gmail.com wrote:
> okay, I'm having this one problem with a text adventure game. It's
> kind of hard to explain, but I'll do my best.
> [code]
>
> def prompt_kitchen():
>     global gold
>     gold_taken = False
>     while True:
>         prompt_kit = raw_input('>')
>         if prompt_kit == 'examine cabinet 1' and not gold_taken:
>             print '''This cabinet has a lot of cups in it with all
> different
> designs and shapes. Where are the people anyway? How come there's
> nobody here?
> In one of the cups you find 8 gold.'''
>             gold = gold+8
>             gold_taken = True
>             pass4()
>         elif prompt_kit == 'examine cabinet 1' and gold_taken:
>             print \
>                   '''This cabinet has a lot of cups in it with all
> different
> designs and shapes. Where are the people anyway? How come there's
> nobody here?'''
>             pass4()
>
> def pass4():
>     global gold
>     print 'You have', gold, 'gold'
>     pass
> [/code]
>
> Okay, now for my problem.
> In the above function, there's the option to examine a cabinet and get
> 8 gold. (everyone here knows that...but I'm just trying to state my
> problem...)
> Unfortunately, it kind of doesn't work.
> After the first time I 'examine cabinet 1' in my game, I get 8 gold
> and I can't get it again.
> But, If I leave the room and come back to it, then it's as if I had
> never gotten the gold the first time, and I can get it again.

That's because your function starts with "gold_taken = False".

The easiest fix is to make gold_taken a global variable initialized
outside the function, like you're already doing with gold.



More information about the Python-list mailing list