您的位置:首页 > 其它

习题四十三

2016-03-15 00:00 204 查看
摘要: 引擎分析

class Engine(object):
def __init__(self, scene_map):
self.scene_map=scene_map
def play(self):
#create an instance of the opening scene
current_scene=self.scene_map.opening_scene()
while True:
print "\n---------"
#run the method and return the name of the next scene
next_scene_name=current_scene.enter()
#create an instance of the next scene
current_scene=self.scene_map.next_scene(next_scene_name)

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)

a_map=Map('central_corridor')
a_game=Engine(a_map)
a_game.play()


本例中将Map类实例作为参数引入Engine类中。

将opening_scene方法和next_scene方法分开个人认为是使代码更美观易懂。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: