私はこれが私ですLPHWのex43に基づいてゲームを作成するために開始し ています:パイソン - これまでのシンプル - - コードクラス
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()
私の質問 - なぜ私は current_sceneを交換することはできませんよ= current_scene = self.scene_map.next_scene(self.scene_map)
とself.scene_map.opening_scene()
'城' が法のnext_sceneによって発見されていないとopening_sceneによって発見された理由を私は理解していません。ループが実行されると、next_sceneは辞書から 'garden'と 'death'を検索します。
で戻ってあなた
current_scene
としてNone
'を取得しているので。 – user2357112'self.scene_map'は' Map'ですが、 'Map.scene'が必要な理由が考えられます。 'current_scene = self.scene_map.next_scene(self.scene_map.start_scene)' –
あなたのタイトルを変更して、あなたの特定の問題を実際に記述してください。 – csmckelvey