I am having the same problem as someone in a previous post. I saw a suggestion to start a new thread to get more eyeballs on it.
I check and all my enter()
present a return
or include a pass
. I cannot get past inputing Adventure
and going to the Adventure
class. I get this error:
File “motato.py”, line 138, in
a_game.play()
File “motato.py”, line 24, in play
next_scene_name = current_scene.enter()
AttributeError: ‘NoneType’ object has no attribute ‘enter’
from sys import exit
from sys import argv
from random import randint
from textwrap import dedent
from os.path import exists
from datetime import datetime, timedelta, date
import time
script, from_file, to_file = argv
class Timer():
def timer(self):
pass
class Engine():
def __init__(self, universe_portal):
self.universe_portal = universe_portal
def play(self):
current_scene = self.universe_portal.opening_scene()
last_scene = self.universe_portal.next_scene('finished')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.universe_portal.next_scene(next_scene_name)
current_scene.enter()
class Scene():
def enter(self):
print("SCENE DUMMY")
exit(1)
class Death(Scene):
def enter(self):
pass
class Portal(Scene):
def enter(self):
print(dedent("""You are safe at home. What do you want to do?
[ Check Inventory ] [ Adventure ] [ Brew ]
"""))
choice = input("> ")
if 'inventory' or 'Inventory' in choice:
return 'inventory'
elif 'adventure' or 'Adventure' in choice:
return 'adventure'
elif 'brew' in choice:
return 'brew_system'
else:
print("DOES NOT COMPUTE")
return 'portal'
class Adventure(Scene):
def enter(self):
print(dedent(""""
Where shall we start our adventure?
[ Rivers of Plenty ] [ SUGAR HELL ] [ Ginger Forest ]
"""))
space_travel = input("> ")
if 'rivers' or 'Rivers' in space_travel:
return 'rivers_of_plenty'
elif 'hell' or 'Hell' in space_travel:
return 'sugar_hell'
elif 'ginger' or 'Ginger' in space_travel:
return 'ginger_forest'
else:
print("CANNOT COMPUTE")
return 'portal'
class Inventory(Scene):
def enter(self):
pass
class RiversOfPlenty(Scene):
def enter(self):
pass
def WaterGoddess(self):
pass
class SugarHell(Scene):
def enter(self):
pass
def SweetSatan(self):
pass
class GingerForest(Scene):
def enter(self):
pass
def GingerElve(self):
pass
class BrewSys(Scene):
def enter(self):
pass
class Finished(Scene):
def enter(self):
pass
class UniversePortal():
scenes = {
'portal': Portal(),
'inventory': Inventory(),
'adventure': Adventure(),
'brew_system': BrewSys(),
'sugar_hell': SugarHell(),
'rivers_of_plenty': RiversOfPlenty(),
'ginger_forest': GingerForest(),
'finished': Finished()
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
val = UniversePortal.scenes.get(scene_name)
return val
def opening_scene(self):
return self.next_scene(self.start_scene)
a_universe = UniversePortal('portal')
a_game = Engine(a_universe)
a_game.play()