笨办法学python3 ex43.py

逻辑整理

1.建立一个map类对象并赋予初始场景

a_map = Map('central_corridor')

2.建立Engine类对象并将map类对象作为参数传入

a_game = Engine(a_map)

3.要开始玩游戏了

a_game.play()

Engine类的play函数:

def play(self):
    current_scene = self.scene_map.opening_scene() #当前场景类的实例化 相当于 current_scene = 当前场景类名()
    last_scene = self.scene_map.next_scene('finished') #建立一个胜利结束场景类对象,准备好后下面进入关键的循环阶段 

    while current_scene != last_scene:
        next_scene_name = current_scene.enter() #如果游戏还没胜利(结束),进入循环后就要先进行目前场景的游戏部分 .enter()运行,结束后返回的是下一个场景的key
        current_scene = self.scene_map.next_scene(next_scene_name) #一个场景enter结束了要开始进入下一个场景了,下一场景类的实例化
    #循环的过程中,.enter()如果进入的是Death场景,无返回值,游戏直接结束

    current_scene.enter() #相当于last_scene.enter() #顺利结束循环,游戏胜利

opening_scene 和 next_scene函数功能很相近,opening_scene 函数返回的是map类实例化时传入的参数start_scene的value,next_scene函数返回的是传入该函数参数scene_name的value。opening函数在调用时,start_scene作为scene_name传入next函数中,好像有点晕,但想清楚了就ok

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值