Help! I inputted the code below for a game that I'm writing in Python for my daughter. I'm not sure what happened but I received the following error:
Traceback (most recent call last):
File "/home/roberto-padilla/mystuff/ella_game.py", line 193, in
a_game.play()
File "/home/roberto-padilla/mystuff/ella_game.py", line 22, in play
next_scene_name = current_scene.enter()
Can someone please help me? I'm at a loss.
P.S. I realize my code is 193 lines but I thought it would give an idea of what I'm trying to accomplish. Thanks in advance for your help.
`from sys import exit
from random import randint
from textwrap import dedent
class Scene(object):
def enter(self):
print("This scene is not yet configured.")
print("Subclass it and implement enter().")
exit(1)
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
last_scene = self.scene_map.next_scene('finished')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
current_scene.enter()
class Death(Scene):
def enter(self):
if 'outside_house' or 'dark_woods':
print("Day becomes night and you're devoured by
wolves.")
print("You're dead! Better luck next time!")
exit(1)
elif 'foyer' or 'living_room':
print("The dog chews your leg off and you bleed to
death.")
print("You're dead! Better luck next time!")
exit(1)
elif 'cellar':
print("The dragon burns you to a crisp.")
print("You're dead! Better luck next time!")
exit(1)
else:
print("You are turned into a rodent and eaten by an
owl.")
print("You're dead! Better luck next time!")
exit(1)
class OutsideHouse(Scene):
def enter(self, have_bone):
print(dedent("""
Welcome to Arcamadius, where magic and
creatures exist. You come to a house in the
dark woods. There is a window on the east wall
and a door on the South wall. The house is
surrounded by woods. What would you like to do?
"""))
action = input("> ")
if action == 'open window':
self.open_window()
elif action == 'open door' and have_bone == True or
have_bone == False:
self.open_door(have_bone)
else:
return 'death'
def open_window():
print(dedent("""
You open the window. It makes a squeaking
noise. What do you wnat to do now?
""" ))
action = input("> ")
if action == 'climb into window':
have_bone = False
print("You enter the window into the kitchen.")
return 'kitchen', have_bone
else:
print("You just stand there!")
return 'death'
def open_door(have_bone):
print("You enter the door into the Foyer")
return 'foyer', have_bone
class Kitchen (Scene):
def enter(self, have_bone):
print(dedent("""
There is a doorway ahead. There is also a
table with a bone on it. What do you wnat to
do?
"""))
action = input("> ")
if action == "go through doorway" and have_bone == True:
return 'living_room', have_bone
elif action == "grab bone" and have_bone == False:
self.grab_bone()
elif action == "climb out window" and have_bone == True or
have_bone == False:
return 'outside_house', have_bone
else:
print("I'm not sure what you are saying.")
self.enter(self, have_bone)
def grab_bone():
print("You grab the bone")
have_bone = True
return 'kitchen', have_bone
class Foyer(Scene):
def enter(self, have_bone):
print(dedent("""
A huge dog is staring and growling at you
What do you do?
"""))
action = input("> ")
if action == "flee":
print(dedent("""
You managed to get away from the dog
chasing you and the dog goes back into the
house.
"""))
return 'outside_house', have_bone
elif action == "give dog the bone" and have_bone == True:
self.give_dog_bone()
elif action == "give dog the bone" and have_bone == False:
print("you have no bone.")
return 'death'
else:
print("I have no idea what that means.")
return(self, have_bone)
def give_dog_bone():
print(dedent("""
You give the dog the bone.
The dog wants to play. You play with the dog
for awhile. Now back to business. The
entrance to the living room is ahead.
"""))
return 'living_room'
class LivingRoom(Scene):
def enter(self):
pass
class DarkWoods(Scene):
def enter(self):
pass
class Cellar(Scene):
def enter(self):
pass
class WitchHouse(Scene):
def enter(self):
pass
class Finished(Scene):
def enter(self):
pass
class Map(object):
scenes = {
'outside_house': OutsideHouse(),
'kitchen': Kitchen(),
'foyer': Foyer(),
'living_room': LivingRoom(),
'dark_woods': DarkWoods(),
'cellar': Cellar(),
'witch_house': WitchHouse(),
'death': Death(),
'finished': Finished(),
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
val = Map.scenes.get(scene_name)
return val
def opening_scene(self):
have_bone = False
return self.next_scene(self.start_scene), have_bone
a_map = Map('outside_house')
a_game = Engine (a_map)
a_game.play()`
Top comments (0)