Условный цикл while не реагирует должным образом - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь написать цикл while с логикой следующим образом:

while enemy is alive and characters are alive:
    continue...

Однако здоровье каждого персонажа связано с отдельной записью переменной / списка.

Итак, у меня есть:

while enemydata[2] >0 and combatpartystats[0][1] >0 and combatpartystats[1][1] >0 and combatpartystats[2][1] >0 and combatpartystats[3][1] >0:
    continue...

И все же цикл прерывается, когда здоровье любого из четырех персонажей падает ниже 0.

Я хочу, чтобы цикл прерывался только тогда, когда все персонажи мертвы или когда враг мёртв.

Надеюсь, я достаточно хорошо объяснил свою проблему, любые вопросы просто задайте.

Ответы [ 3 ]

0 голосов
/ 17 мая 2019

Вместо того, чтобы делать

while enemydata[2] >0 and combatpartystats[0][1] >0 and combatpartystats[1][1] >0 and combatpartystats[2][1] >0 and combatpartystats[3][1] >0:

, где это будет продолжаться только до тех пор, пока все вышеперечисленное является истинным, замените операторы "и" на операторы "или", а затем, если любой из них оценивается как истинный, скрипт продолжится.

0 голосов
/ 17 мая 2019

Попробуйте изменить и на или , и я думаю, что он будет делать то, что вы хотите.

0 голосов
/ 17 мая 2019

Ты почти понял.Попробуйте это:

while enemydata[2] > 0 and (combatpartystats[0][1] > 0 or combatpartystats[1][1] > 0 or combatpartystats[2][1] > 0 or combatpartystats[3][1] > 0):
    continue...

Это сломается, только если ваш враг мертв или все товарищи по команде мертвы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...