[Tutor] Hands-on beginner's project?
bob gailer
bgailer at gmail.com
Tue Jun 24 18:20:13 CEST 2008
nathan virgil wrote:
> I'm very new to Python, and (to a slightly lesser extent) programming
> in general. I'd like to get some experience by practicing
> simple-yet-functional programs, with a bit of an emphasis on games.
> The first game I'd like to attempt would be a simple, non-linear
> story, similar to those choose-your-adventure books. I don't want to
> start with anything too complicated, like having mapped-out
> directions, or interactive objects, although I do eventually want to
> get into stuff like that.
>
>
> Python seems to me like it would be a good language for this sort of
> stuff. I figure I just need to use a lot of print, if/elif/else,
> raw_input(), and a ton and a half of variables. My problem at the
> moment is that I don't know how to get from one section of the story
> to the next. I vaguely remember reading about some language using a
> "goto" command for something like this, but I'm not sure how that
> would be handled in Python.
>
> A rough idea of what I'm trying to do (in a presumably hypothetical
> language) would be something like this:
>
> 0100 print "Ahead of you, you see a chasm.
> 0200 jump = raw_input("Do you wish to try jumping over it? Y/N")
> 0300 if jump = Y:
> 0400 goto 1700
> 0500 if jump = N:
> 0600 goto 2100
>
> Does this make any sense?
Yes
> Is there some way I could do this in Python?
Definitely. Python is a "structured programming language". This means it
has no GOTO statement.
You could, for starters, use the following algorithm:
room = 1
while True:
# retrieve data for current room
if room == 1:
desc = "Ahead of you, you see a chasm."
ques = "Do you wish to try jumping over it? Y/N"
destY = 2
destN = 3
elif room == 2:
desc = "Ahead of you, you see a warty green ogre."
ques = "Do you wish to eat it? Y/N"
destY = 4
destN = 5
# etc for the rest of the rooms
# ask current question and move to next room
print ques
ans = raw_input(ques).upper() # allow for lower case input
if ans == "Y":
room = destY
elif ans == "N":
room = destN
elif ans == "Q": # give us a way out.
break else:
print "Please answer Y or N"
Start with this. Try to get it running. Then come back with questions.
Notice that I have separated the "data" (description of rooms and flow
between rooms) from the program logic.
This makes things a LOT easier.
There are more complicated structures in Python that make game
programming a LOT easier and more flexible that the above.
--
Bob Gailer
919-636-4239 Chapel Hill, NC
More information about the Tutor
mailing list