Text Based RPG in Python - Advice?

Started by
3 comments, last by Alistair_Hutton 17 years, 9 months ago
***This is a repost of a thread I posted in the "Newbie" forum, but as the core of my question involves Python, I thought it was also appropriate to post this thread here where more people who are familiar with Python may be able to read it*** Hey everyone - I've recently started learning Python as my first programming/scripting language with the goal of creating a text adventure game as a first somewhat ambitious project, and then moving on towards a more ambitious idea of a text RPG. I've been learning a lot of small snippits of Python here and there and working on many small tutorials that introduce various core concepts about the language and programming in general. What I would absolutely love though is a tutorial involving the creation of either a text adventure game in Python, or, a text RPG. I've done a lot of googling and research, but I've been unable to find anything resembling what I'm looking for. I figured if anyone knew where to find something like that, they'd be in this community. Can anyone send me in the right direction? Much thanks, -M
Advertisement
I already posted in your other thread on the basics. As I said, I think what you're looking for is a bit of a niche area to expect much in the way of tutorials, but the underlying principles are simple enough and apply to most languages. As with any application, it's essentially a display/input/process loop, and the only hard parts are organising the data (just use lists and maybe tuples for now, upgrade to classes later), and processing the input (use raw_input to get it, then perhaps use the split string method to read the individual words).

If you want more details on any particular area, feel free to ask. I think this will work best if you think about what you want to achieve, plan it a bit, then dive in, asking questions as you go.
This might be what you would call "cheating" but here is my game. There are some errors you might run into while playing. Like playing it outside of IDLE
Anyway, here it is:
def gameOver():    print """    -----------------    Game Over    -----------------"""print """Alien Intertainment**********************************************************--------------------------------------------------------------------------------------------------------------------Operation: VIM MPOO--------------------------------------------------------------------------------------------------------------------**********************************************************http://www.freewebs.com/idaliengames/**********************************************************IF THE GAME ENDS WHILE PLAYING, THIS MEANS YOU HAVE LOST.**********************************************************Hello. My name is VOX. I will be assisting you throughoutthis operation. I would first like to know your name."""name=raw_input("Name: ")print """"""+name+""". You are the top spy in a secret governmentorganization. This organization is so secret I am notallowed to tell you the name of it. It is your job is tofind and defeat Vim Mpoo,  """+name+""", the government'smost dangerous villian. It is thought that he is the headof a global cocaine distribution organization. Yourreward: a handsome 4.5 billion US dollars for the completionof this Operation. Do you except?1. Yes2. No"""yes=raw_input("Answer: ")if yes=="1":    print """Good."""else:    print """Too bad, you have to do it anyway."""print """What would you like to do now?1. Get started2. Learn more"""main=raw_input("Number: ")if main=="2":    print """This game was created by Daniel T.    http://www.freewebs.com/idaliengames.    Program used: Python"""elif main =="1":    print """Initiating..."""print """VOX: Your first mission is to get Nip Pom's ID and addyour picture to it. Good luck!----------------------------------------------------------MISSION 1: In the car----------------------------------------------------------**********************************************************While leaving headquarters, you see a man drive away quickly in hiscar and he looks like Nip Pom. What do you do?1. Chase them on your motorcycle2. Call for backup3. Shoot at them from a distance"""car=raw_input("Number: ")if car=="1":    print """**********************************************************They notice you following them and speed up. They start shooting at you.What do you do?1. Shoot back at them2. Call off the chase3. Follow them at a distance"""    chase=raw_input("Number: ")    if chase=="1":        print """**********************************************************You shoot one of the wheels and the car goes off the road.What do you do?1. Advance while shooting2. Call for backup"""        advance=raw_input("Number: ")        if advance=="1":            print """**********************************************************Lucky shot! you hit him dead on in the head. You go over andretrieve his ID. You have completed mission one.1. Go back to base2. Get password"""            finishOne=raw_input("Number: ")            #finished outside of block        elif advance=="2":            print """**********************************************************You call for backup, but backup checks the car, Nip Pom isn\'tthere. You fail the mission."""    elif chase=="2":        print """**********************************************************You call off the chase, playing it safe. Nip Pom gets away. You failthe mission."""    else:        print """**********************************************************You follow him at a distance, but he eventually notices you. He leadsyou into a trap and you are unable to finish the mission. You fail."""elif car=="2":    print """**********************************************************You call the backup, but he is already escaping. What do youdo?1. Chase without backup2. Wait for backup"""    backup=raw_input("Number: ")    if backup=="1":        print """**********************************************************They notice you following them and speed up. They start shooting at you.What do you do?1. Shoot back at them2. Call off the chase3. Follow them at a distance"""        chase=raw_input("Number: ")        if chase=="1":            print """**********************************************************You shoot one of the wheels and the car goes off the road.What do you do?1. Advance while shooting2. Call for backup"""            advance=raw_input("Number: ")            if advance=="1":                print """**********************************************************Lucky shot! you hit him dead on in the head. You go over andretrieve his ID. You have completed mission one.1. Go back to base2. Get password"""                finishOne=raw_input("Number: ")                #finished outside of block            elif advance=="2":                print """**********************************************************You call for backup, but when backup checks the car, Nip Pom isn\'tthere. You fail the mission."""        elif chase=="2":            print """**********************************************************You call off the chase, playing it safe. Nip Pom gets away. You failthe mission."""        else:            print """**********************************************************You follow him at a distance, but he eventually notices you. He leadsyou into a trap and you are unable to finish the mission. You fail."""else:        print """**********************************************************You shoot one of the wheels and the car goes off the road.What do you do?1. Advance while shooting2. Call for backup"""        advance=raw_input("Number: ")        if advance=="1":            print """**********************************************************Lucky shot! You hit him dead on in the head. You go over andretrieve his ID. You have completed mission one.1. Go back to base2. Get password"""            finishOne=raw_input("Number: ")            #finished outside of block            #needs help        elif advance=="2":            print """**********************************************************You call for backup, but when backup checks the car, Nip Pom isn\'tthere. He has escaped. You fail the mission."""#needs helpif finishOne=="1":    print """VOX: Congradulations, """+name+""", on the completion of this mission."""if finishOne=="2":    print """The password for this level is:    non_important_person"""print """VOX: You have retrieved Nip Pom's ID. I will now put your picture init....Okay you now have Nip Pom's ID with your picture.Initiating Mission two...----------------------------------------------------------MISSION TWO: Who said anything about evil henchmen?!?----------------------------------------------------------**********************************************************Now you have to find and follow Vim Mpoo to his hideoutwithout getting caught or killing Vim Mpoo.Good Luck!**********************************************************You go to the last place Vim Mpoo was seen, at the DahpHotel. What do you do?1. Look around yourself2. Ask the clerk at the front desk where he is3. Ask people around the room"""hotel=raw_input("Number: ")

Don't cheat
Nintendo
There are a few modules that can help with the input parsing, like cmd, shlex and csv. readline may help with the actual user input process. If you want the game to run "in real time" even while waiting for user input, then you're probably going to want to use asynchat and Threading.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
THer is also, for the industrial strength, over-kill scenario PAW which is the Python Adventure Writing module. This does ll of the heavy lifting for creating text aventures for you. This may be more than you want.

This topic is closed to new replies.

Advertisement