В то время как отступ цикла мешает моим переменным - PullRequest
0 голосов
/ 09 ноября 2018

Я очень новичок в программировании, и у меня есть фрагмент кода, который работает в одну сторону, но работает только полу-правильно в двух других. Я просто хочу понять, почему. Это из текстовой игры, за которой я следую:

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, и я прошу прощения, если я сделал это неправильно.

1 Ответ

0 голосов
/ 09 ноября 2018

Похоже, что 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().

...