text adventure game problem

corvettecraz92 at gmail.com corvettecraz92 at gmail.com
Tue Apr 8 21:44:56 EDT 2008


On Apr 8, 9:25 pm, André <andre.robe... at gmail.com> wrote:
> On Apr 8, 10: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.
> > How do I fix this?
>
> quick guess: define gold_taken as a global variable and initialize it
> outside of the function.
>
> Warning: avoid global variables if at all possible.
>
> ;-)
> André

Here's a sample code that, in fact, does work. In this code, when run,
I can only get the gold once.

def prompt_house():
    global gold
    gold_taken = False
    while True:
        prompt_hou = raw_input('>')
        if prompt_hou == 'examine table' and not gold_taken:
            print \
                  '''There are a lot of car magazines here.
You flip through them and find 5 gold.
'''
            gold = gold+5
            gold_taken = True
        elif prompt_hou == 'go west':
            # this gets you out of the loop
            go_west()
            # more elif choices here ...
        elif prompt_hou == 'examine table' and gold_taken:
            print '''There are a lot of car magazines here.'''
            go_west()
def go_west():
# just a dummy funk
    global gold
    print gold
    pass
                # test
gold = 0
prompt_house()

But what's the difference between this and the one that I posted?




More information about the Python-list mailing list