On Apr 8, 9:25 pm, André <[EMAIL PROTECTED]> wrote: > On Apr 8, 10:01 pm, [EMAIL PROTECTED] 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? -- http://mail.python.org/mailman/listinfo/python-list