|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 taigefcxj 于 2018-6-24 19:38 编辑
from sys import exit
from random import randint
class Scene(object):
def entet(self):
print("this scene is not yes configured. Subclass it and implement enter().")
exit(1)
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)
class Death(Scene):
class CentralCorridor(Scene):
class LaserWeaponArmory(Scene):
class TheBridge(Scene):
class EscapePod(Scene):
class Map(object):
scenes = {'death': Death(),
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod()
}
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()
上面是一个文字冒险类的小游戏 为了方便大家看代码 我把一些多余的部分去掉了
一直没有弄懂他的 class Engine 是怎么起到载入现在的场景 和准备下一个场景的
我理解的路线图 ===〉 在实例化a_map = Map('central_corridor') 以后 >>>> 'central_corridor'进入 class Map >>>>> 调用函数 def __init__ (self,start_scene) 然后 central_corridor'赋值给 self.start_scene >>>>> 但是再下一步 def next_scene(self,scene_name) 并没有被传入参数 刚刚赋值的 self.start_scene变量 也没有进入这个函数 在下面一个函数
所以到了这里就看不明白了 请大佬指点 |
|