习题四十三

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方法分开个人认为是使代码更美观易懂。

转载于:https://my.oschina.net/u/2519674/blog/638010

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值