Reputation: 35
I made a short text adventure for my human phys class about the liver.
link: http://pastebin.com/QYkn5VuU
#SUPER LIVER ADVENTURE 12!
from sys import exit
from random import randint
quips = ["Welcome!",
"have a wonderful day",
"Livers are cool!",
"this text was chosen at random",
"Writen in python",
"woo, splash text!",
"Notch loves ez!",
"Almost dragon free!"]
print quips [randint (0, len(quips) -1)]
def first_thing () :
print "You are a liver, congratulations! You should do some liver stuff now."
print "Here comes some blood, what should you do?"
filterblood = raw_input (">")
if filterblood == "filter" or "filter blood" or "filter the blood":
return 'second_thing'
elif filterblood == "who cares":
print "I care, be more considorate!"
return "first_thing"
else:
print "Sorry, no (Hint, it is your main purpose!)"
return "first_thing"
def second_thing () :
print "You are now filtering the blood, good for you!"
print "oh no! There is too much aldosterone! what would that do?"
fluidz = raw_input (">")
if fluidz == "fluid retension" or "Keeping fluids":
return 'third_thing'
else:
print "nope! (hint, what does aldosterone do?)"
return "second_thing"
def third_thing () :
print "Oh no!, that's bad!"
print "What should you do about that aldosterone?"
metabolize = raw_input (">")
if metabolize == "metabolize" :
return 'fourth_thing'
else:
print "BRZZZZ, wrong!"
return "third_thing"
def fourth_thing () :
print "super duper!"
print "the aldosterone has been taken care of, no problems at the current moment"
print "..."
print "..."
print "..."
print "After a couple of months a problem arises, you are inflamed, what could this be?"
hepatitis = raw_input (">")
if hepatitis == "hepatitis":
return 'fifth_thing'
else:
return "fourth_thing"
def fifth_thing () :
print "OH NO! Hepatitis!"
print "What could have caused this?"
idunno_somthing = raw_input (">")
if idunno_somthing == "infection" or "an infection" :
print "neat, thats no good."
print "thank you for coming"
exit (0)
elif idunno_somthing == "sex" or "drugs" or "rock n roll":
print "very funny, what specificly caused it?"
return "fifth_thing"
else:
return "fifth_thing"
ROOMS = {
'first_thing': first_thing,
'second_thing': second_thing,
'third_thing': third_thing,
'fourth_thing': fourth_thing,
'fifth_thing': fifth_thing
}
def runner(map, start):
next = start
while True:
room = map[next]
print "\n--------"
next = room()
runner(ROOMS, 'first_thing')
#if you steal my stuff, credit me.
I had to type in hepatitis twice (lines 66 and 67)and none of the elif's worked.
edit: What am I missing?
This is probably a really stupid question, I'm just starting out. We were all beginners at once.
Upvotes: 0
Views: 163
Reputation: 9049
For fun, I completely fixed up your program.
#!/usr/bin/python
# SUPER LIVER ADVENTURE 12!
# If you steal my stuff, credit me.
# Owen Sanders on StackOverflow
#
# Updated December 5, 2011
# OregonTrail on StackOverflow
from sys import exit
from random import randint
quips = [
"Welcome!",
"have a wonderful day",
"Livers are cool!",
"this text was chosen at random",
"Writen in python",
"woo, splash text!",
"Notch loves ez!",
"Almost dragon free!"
]
print quips[randint(0, len(quips)-1)]
def first_thing():
print ("You are a liver, congratulations! "
"You should do some liver stuff now.")
print "Here comes some blood, what should you do?"
filterblood = raw_input ("> ")
if filterblood in ("filter", "filter blood", "filter the blood"):
return 'second_thing'
elif filterblood == "who cares":
print "I care, be more considorate!"
return "first_thing"
else:
print "Sorry, no (Hint, it is your main purpose!)"
return "first_thing"
def second_thing():
print "You are now filtering the blood, good for you!"
print "oh no! There is too much aldosterone! what would that do?"
fluidz = raw_input ("> ")
if fluidz in ("retain fluid", "fluid retention", "keep fluids",
"keep fluid"):
return 'third_thing'
else:
print "nope! (hint, what does aldosterone do?)"
return "second_thing"
def third_thing():
print "Oh no!, that's bad!"
print "What should you do about that aldosterone?"
metabolize = raw_input ("> ")
if metabolize == "metabolize":
return 'fourth_thing'
else:
print "BRZZZZ, wrong!"
return "third_thing"
def fourth_thing():
print "super duper!"
print ("the aldosterone has been taken care of, no problems at the "
"current moment")
print "..."
print "..."
print "..."
print ("After a couple of months a problem arises, you are inflamed, "
"what could this be?")
hepatitis = raw_input ("> ")
if hepatitis == "hepatitis":
return 'fifth_thing'
else:
return "fourth_thing"
def fifth_thing():
print "OH NO! Hepatitis!"
print "What could have caused this?"
idunno_somthing = raw_input ("> ")
if idunno_somthing in ("infection", "an infection"):
print "neat, thats no good."
print "thank you for coming"
exit (0)
elif idunno_somthing in ("sex", "drugs", "rock n roll"):
print "very funny, what specificly caused it?"
return "fifth_thing"
else:
return "fifth_thing"
ROOMS = {
'first_thing': first_thing,
'second_thing': second_thing,
'third_thing': third_thing,
'fourth_thing': fourth_thing,
'fifth_thing': fifth_thing
}
def runner(rooms, start):
nextRoom = start
while True:
room = rooms[nextRoom]
print "--------"
nextRoom = room()
runner(ROOMS, 'first_thing')
Upvotes: 2
Reputation: 19339
Your elif
statement on line 82 reads:
elif idunno_something == "sex" or "drugs" or "rock n roll":
this should be
elif idunno_something in ("sex", "drugs", "rock n roll"):
The same sort of change should help on lines 22, 38 and 77.
Upvotes: 6
Reputation: 34974
Since you are a beginner, I will start with some suggestions on asking for help. Ideally, you want to provide the smallest amount of code as possible that shows the problem that you are having. Explain what you expect to happen, and what does actually happen when you execute the code that you have presented.
When you want to check if a string is multiple values, you put the possible values in a list or tuple.
if filterblood in ["filter", "filter blood", "filter the blood"]:
In the case of the example above you may want to accept all answers that start with "filter":
if filterblood.startswith("filter"):
Upvotes: 2