Ich beginne Spiel auf der Basis von LPHW ex43 zu schaffen und das ist meine - so weit einfach - Code:Python - Klassen
from sys import exit
class Engine():
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
while True:
print "\n----------"
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
class Death():
def enter(self):
print "You are dead"
exit(1)
class Castle():
def enter(self):
print "Welcome in my Castle"
print "Choose between two paths: left or right"
choice = raw_input(">")
if choice == "left":
return 'death'
if choice == "right":
return 'garden'
class Garden():
def enter(self):
print "Welcome..."
exit(1)
class Map():
scenes = {
'castle': Castle(),
'garden': Garden(),
'death': Death()
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
return Map.scenes.get(scene_name)
def opening_scene(self):
return self.next_scene(self.start_scene)
a_map = Map('castle')
a_game = Engine(a_map)
a_game.play()
Meine Frage - warum bin ich nicht in der Lage current_scene ersetzen = self.scene_map.opening_scene()
mit current_scene = self.scene_map.next_scene (self.scene_map)
ich verstehe nicht, warum 'Schloss' nicht durch die Methode next_scene gefunden und wird von opening_scene gefunden. Sobald die Schleife ausgeführt wurde, wird next_scene 'Garten' und 'Tod' aus dem Wörterbuch zurückholen. Vielen Dank im Voraus
'Erhalte opening_scene' zu 'next_scene' ein anderes Argument übergibt, als Sie in Ihrem versuchten Ersatz tat. – user2357112
Ich denke, der Grund könnte sein, dass 'self.scene_map' eine' Map' ist, aber Sie wollen 'Map.scene' z. 'current_scene = self.scene_map.next_scene (self.scene_map.start_scene)' –
Ändern Sie Ihren Titel, um Ihr spezifisches Problem zu beschreiben. – csmckelvey