我对编程非常陌生,我有一段代码可以以一种方式工作,但是只能以另外两种方式半正确地工作。我只是想了解原因。 这是我正在关注的文字游戏:
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
current_scene.enter()
这段代码可以正常工作,但是,我认为缩进current_scene.enter()会使它适当地成为while循环的一部分,如下所示
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
current_scene.enter()
在代码的其他部分,场景包含输入。当此行缩进为while循环的一部分时,发生的情况是当您提供正确的输入时,它再次通过同一场景。再次提供正确的输入最终将使其继续游戏的其余部分。为什么会这样?
最后,如果我将current_scene.enter()移到while循环上方,则它会在正确输入后重复第一个场景两次,为什么? 下面是它的样子
current_scene.enter()
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
我非常感谢您的帮助。这是我对StackOverflow的第一个问题,如果操作不正确,我深表歉意。
答案 0 :(得分:1)
看起来current_scene.enter()返回下一个场景名称,您需要在最后一个场景上调用current_scene.enter()才能获得积分。
while current_scene != last_scene:
current_scene = self.scene_map.next_scene(current_scene.enter())
current_scene.enter()
也许逻辑上没有多余的变量是有意义的。尽管“额外变量”可能是必需的,因为scene_map.next_scene(...)
可能不会像current_scene.enter()
那样返回下一个场景名称。