Reputation: 138
This is an attempt at a simple text adventure. I can't manage to make the conditionals work the way I want them to. When user input is given, such as 'left' when asked, it tells me 'left' isn't defined, even though I listed it in there. Here's the code.
from time import sleep
name = raw_input("What is your name? ")
live = raw_input("Where do you live? ")
print "%s. You have just come to your senses." % (name)
print "You are in %s, lying in the road." % (live)
sleep (5)
from datetime import datetime
now = datetime.now()
print "You look at your watch. There's a crack in the screen."
sleep (5)
print "Surely it cannot be %s/%s/%s at %s o clock..." % \
(now.day, now.month, now.year, now.hour)
sleep (5)
print "There is light blotting orange onto your closed eyes."
sleep (7)
print "You open your eyes."
sleep (5)
print "you see the road. Scarred, cracked and peppered with dead birds."
sleep (5)
print "Smoke thins out over the horizon."
sleep (5)
print "There is a house you are familiar with, to your right."
sleep (3)
print "There is a road leading uphill to your left."
sleep (3)
print "Where do you turn to?"
answer = raw_input("Type left or right and press Enter.")
if answer == left:
print "The road winds uphill."
sleep (5)
print "Glass crunches underfoot."
sleep (5)
print "The trees are all bare."
sleep (5)
print "The leaves turned to dust."
print "They are ground into the cracks, between the paving stones."
sleep (5)
if answer == right:
print "The corridor turns sharply."
sleep (2)
print "You go deeper inside until you can't see anything"
sleep(5)
print "You hear a noise from the floor below."
sleep (5)
print "You can just make out a white doorframe under the staircase."
sleep (5)
answer2 = raw_input("Do you go into the basement? Type yes, or no.")
if answer2 == yes:
print "The stairs creak. You fumble along the wall for a lightswitch"
sleep (5)
print "Do you press it?"
if answer3 == yes:
print "Light floods the basement. It leaves you blinded for a few seconds..."
sleep (5)
print "Were you pushed or did you fall?"
sleep (2)
print "No one remembers that day, or any other. The End"
if answer2 == no:
print "You can't see a thing. You decide to get out back to the street."
sleep (5)
print "Night is falling. You are hopelessly lost."
sleep (20)
sys.exit
Upvotes: 2
Views: 160
Reputation: 1153
answer = raw_input("Type left or right and press Enter.")
if answer == "left":
print "The road winds uphill."
sleep (5)
print "Glass crunches underfoot."
sleep (5)
print "The trees are all bare."
sleep (5)
print "The leaves turned to dust."
print "They are ground into the cracks, between the paving stones."
sleep (5)
if answer == "right":
print "The corridor turns sharply."
sleep (2)
print "You go deeper inside until you can't see anything"
sleep(5)
print "You hear a noise from the floor below."
sleep (5)
print "You can just make out a white doorframe under the staircase."
sleep (5)
answer2 = raw_input("Do you go into the basement? Type yes, or no.")
if answer2 == "yes":
print "The stairs creak. You fumble along the wall for a lightswitch"
sleep (5)
print "Do you press it?"
if answer3 == "yes":
print "Light floods the basement. It leaves you blinded for a few seconds..."
sleep (5)
print "Were you pushed or did you fall?"
sleep (2)
print "No one remembers that day, or any other. The End"
if answer2 == "no":
print "You can't see a thing. You decide to get out back to the street."
sleep (5)
print "Night is falling. You are hopelessly lost."
sleep (20)
sys.exit
you need the quotes because otherwise the compiler assumes it is a variable and you want the constant value "left", "yes", etc. not a variable called left, yes etc
Upvotes: 0
Reputation: 2578
Your issue will likely be resolved with this:
if answer == "left":
Upvotes: 0
Reputation: 34146
It looks like you have not defined the variables left
, right
, yes
nor no
. Since the input is a string, you should compare it against a string:
if answer == "left":
...
if answer == "right":
...
if answer == "yes":
...
if answer == "no":
...
Note: A string in Python is enclosed by single quotes 'some string'
or double quotes "another string"
, or, as @JoranBeasley mentioned, triple quotes """some multi-line string"""
.
Upvotes: 2
Reputation: 113978
if answer == "left":
you need to compare strings with strings
if answer == left:
is trying to compare the variable answer with the variable left, which python is correctly telling you that there is no variable named left
of coarse another possibility would be to define a variable named left at the top
left = "left"
(Keep in mind the same applies for your other comparisons)
Upvotes: 6