スクリプトが次の部屋を取得する方法と、一般的に「エンジン」クラスと「マップ」クラスがどのように機能するかがわかりません。ここに抜粋があります:
Class Map(object):
scenes = {
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod(),
'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)
class Engine(object):
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)
これらの部分がどのように機能するかわかりません。クラス、オブジェクトのインスタンス、属性、その他の OOP がどのように機能するかは知っていますが、何らかの理由でコードのこの部分がわかりません。主に Map クラス。誰かがそれを説明できたら、それは素晴らしいことです。
また (演習を読む必要があるかもしれません)、なぜこれら 2 つのクラスが必要なのですか? 代わりにクラス メソッド (つまり、self をパラメーターとして持たないメソッド) でそれを行うことはできませんか? 次に、たとえば CentralCorridor.enter() を呼び出すだけです。実際、それが答えを読む前に解決した方法であり、うまくいきました。
申し訳ありませんが、私の主な質問は、Engine クラスと Map クラスがどのように機能するかです。もう一つは二次的なものです。
前もって感謝します!