[Tutor] help, complete beginner please!
bob gailer
bgailer at gmail.com
Sat Aug 28 07:16:04 CEST 2010
On 8/27/2010 9:42 PM, kevin hayes wrote:
> Hi all! I'm trying to write a basic text adventure game to start
> learning python (just for fun). I've gone through the first four
> chapters of a "learn python game programming book" and I'm having
> trouble with the exercise on writing a text adventure. I've been
> piecing together what is in the book with some examples I found
> online. My goal with this question is not to necessarily make the code
> I've written work, but to gain a fundamental understanding of the
> concepts.
> Can someone show me how to organize a text-based game with
> these things kept in mind: 1)Each room will be a function
> 2)Direction(N,S,E,W) 3)"Look at" 4)Pick Up 5)Quit 6)Accumulated Gold
> Coins 7) Find all the Gold 8)Win/Lose
aug dawg recommended classes, with which I agree, but that may be
premature for you.
1) define the functions once, outside the while loop.
2) there is no need for global gold. global only makes sense inside a def.
3) do not reset gold to 0 at the start of each loop cycle. Do that
before the loop.
4) write a help function to handle the help text rather than repeating
the text multiple times.
5) use initial lower case for function and variable names. This is a
convention that makes
it easier to read each other's code as well as your own code.
6) check the spelling of wooley mamoth
7) while keepGoing == True: can be simplified to while keepGoing:
8) write a function to get a command. Have it do the uppercasing and
checking for / processing of common commands such as HELP,
9) have the functions return text rather than printing it. Use triple
quoted text. e.g.:
def Room1():
description = """You find yourself in a large room. Above you is a
massive crystal
chandelier. In front of you is round stone fountain, spewing water."""
Then in the loop:
print Room1().
This separates data from logic and paves the way to convert things to
classes & dictionaries.
> I'm looking for the simplest version of this as possible,
> because I'm having trouble with the concepts. I'm only showing my code
> to give you an idea where I'm at. However, I would really like someone
> to lay out a little code structure for me.
>
> I'm using Python 2.6.5 on a Mac Version 10.4.11 and don't consider
> myself computer literate, so bear with my ignorance please.
> Also, don't feel like you have to correct my code...please
> just create your own example of code structure to get me on the right
> track.
>
> Here is the start of my game:
>
> """FirstGame.py
> First try at creating a text-based adventure game. Trying to learn
> the basics
> of creating functions and using if and loops.
> kevin: 8/27/10"""
>
> keepGoing = True
> while keepGoing == True:
>
> global gold
> gold = 0
>
> def RoomOne():
> print "You find yourself in a large room. Above you is a
> massive crystal"
> print "chandelier. In front of you is round stone fountain,
> spewing water"
> print "from it's center. On the walls hang green satin
> drapery. The ceiling"
> print "is comprised of three ornate arches. There is an arch
> in front of you"
> print "and to your right and left. A staircase leads up from
> under the arch"
> print "in front of you. Under the arches to your left and
> right are large wooden"
> print "doors, each with an iron handle. Enter 'Help' for a
> full list of commands."
> RoomOne()
> Command = raw_input("Please enter a command. ")
> Command = Command.upper()
> if Command == "N":
> RoomFour()
> elif Command == "S":
> print "You ditched the creepy castle and headed for the road."
> keepGoing == False
> elif Command == "E":
> RoomTwo()
> elif Command == "HELP":
> print "List of Commands: 'Help',then enter for this list."
> print "'N', then enter = Door to the North."
> print "'S', then enter = Door to the South."
> print "'E', then enter = Door to the East."
> print "'W', then enter = Door to the West."
> print "'Look at', then 'objects name', then
> enter = Looks at an object."
> print "'Pick Up', then 'objects name', then
> enter = Picks up an object."
> print "'Q', then enter = Quit Game."
>
> elif Command == "W":
> RoomSix()
> elif Command == "LOOK AT FOUNTAIN":
> print "There appears to be 4 gold coins in it."
> elif Command == "PICK UP 4 GOLD COINS":
> gold = gold + 4
> print "Current Gold = ", gold
> elif Command == "Q":
> keepGoing = False
> else:
> print "That doesn't work."
>
> def RoomTwo():
> print "Current Gold = ", gold
> print "In the middle of the room is a large Gargoyle with
> fiery red eyes."
> print "He's holding a cup. In the southeast corner of the room
> you see a broom"
> print "with dust and cob-webs on it. Next to the broom is a
> dead rat."
> print "To the north is another door. In front of the door is
> an overturned basket."
>
> promptTwo = raw_input("What are you going to do? ")
> promptTwo = promptTwo.upper()
>
> if promptTwo == "N":
> RoomThree()
> elif promptTwo == "S":
> print "There is no door there."
> elif promptTwo == "W":
> RoomOne()
> elif promptTwo == "E":
> print "There is only a wall there."
> elif promptTwo == "Q":
> keepGoing = False
> elif promptTwo == "PICK UP BASKET":
> print "You pick up the basket, revealing 2 gold pieces."
> RoomTwo()
> elif promptTwo == "PICK UP 2 GOLD COINS":
> gold = gold + 2
> print "Current Gold = ", gold
> RoomTwo()
> elif promptTwo == "LOOK AT GARGOYLE":
> print "Looking at the Gargoyle you notice he's really mean,
> and really still."
> RoomTwo()
> elif promptTwo == "LOOK AT BROOM":
> print "Looking at the broom, you notice it's unnecessarity dirty."
> elif promptTwo == "PICK UP BROOM":
> print " You pick up the broom. But you don't notice anything
> special, so you"
> print "set it back down where it was."
> elif promptTwo == "LOOK AT CUP":
> print "You look at the cup, and find nothing of interest."
> elif promptTwo == "LOOK AT DEAD RAT":
> print "You look at the dead rat and find it utterly disgusting."
> elif promptTwo == "HELP":
> print "List of Commands: 'Help',then enter for this list."
> print "'N', then enter = Door to the North."
> print "'S', then enter = Door to the South."
> print "'E', then enter = Door to the East."
> print "'W', then enter = Door to the West."
> print "'Look at', then 'objects name', then
> enter = Looks at an object."
> print "'Pick Up', then 'objects name', then
> enter = Picks up an object."
> print "'Q', then enter = Quit Game."
> else:
> print "That didn't work."
>
>
> def RoomThree():
> print "Current Gold = ", gold
> print "To the north is a giant replica of a wooley mamoth.
> His tusks are made"
> print "of gold. To the east is a painting of Mother Theresa.
> Under the painting"
> print "is a baby's crib. The only doors you see are to the
> south and west."
>
> promptThree = raw_input("What would you like to do? ")
> promptThree = promptThree.upper()
>
>
>
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
--
Bob Gailer
919-636-4239
Chapel Hill NC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100828/bf8537ed/attachment-0001.html>
More information about the Tutor
mailing list