> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On > Behalf Of Jonah Fishel > Sent: Monday, June 18, 2007 10:30 AM > To: pygame-users@seul.org > Subject: [pygame] Text-Based RPG > > I've been away from Python for several months. I just came back to > it, to start working on a text-based RPG. To get started, I decided > to move by rooms. I have separate text files for each major message, > to conserve file space. What troubles me is that when I tested it, > whenever I enter anything into the command line, it says 'Invalid > command' which I included as an error message. Here is where I think > the trouble is: > > def command_line(): > command = raw_input('>>> ') > def command(command, current_room): > if current_room == anthro_tavern: > if command == 'north': > print '\n\nThat room does not exist yet. Please try > again.\n\n' > elif command == 'south': > print '\n\nThat room does not exist yet. Please try > again.\n\n' > elif command == 'down': > print 'That room does not exist yet. Please try again./n/n' > elif command == 'talk to garrick': > speech = open('garricks_speech.txt', 'r') > print speech.read() > speech.close() > elif command == 'talk to janet': > speech = open('janets_speech.txt', 'r') > print speech.read() > speech.close() > elif command == 'talk to stranger': > print 'This feature is coming soon.' > else: > print 'Invalid command.' > anthro_tavern() > else: > print 'Error 1: Non existent room being requested/nfrom. If > this error appears, something/nis very wrong.' > def anthro_tavern(): > text_file = open("swamp_tavern.txt", "r") > print text_file.read() > text_file.close() > command(command_line(), anthro_tavern) > return current_room > > anthro_tavern() > > I originally had different commands for each action, with variations > on capitalization so you didn't have to enter the same command every > time, but then all it did was the message for the first 'if' line. > Does anyone see a problem with this?
You'll probably get a bunch of suggestions for how to improve the overall structure of things here, but the reason why your sample isn't working like you expect it to is because your command_line() function isn't returning a value. Since it doesn't have an explicit return, the value your command() function is seeing is None, which is what would be printed if you put a 'print command' line at the top of your command() function. Try this instead: def command_line(): return raw_input('>>> ') As a suggestion for dealing with capitilization variations, take a look at the lower string method. --------- John Krukoff [EMAIL PROTECTED]