Итак, некоторая справочная информация, я новичок в программировании и до сих пор училась, поэтому я приношу свои извинения за мои тривиальные ошибки. Я делаю свою собственную игру на основе текста только для дальнейшей практики и т.д.while цикл не заканчивается, когда требуется
Вот ссылка на весь на раздаточном для больше контекста: https://www.dropbox.com/sh/uxy7vafzt3fwikf/B-FQ3VXfsR
я в настоящее время пытаюсь реализовать боевую систему для моей игры, и Я сталкиваюсь с проблемой последовательности боя, которая не заканчивается, когда это необходимо. «Боевая последовательность» представляет собой цикл в то время следующим образом:
public void startCombat()
{
inCombat = true;
while(inCombat != false)// && herohealth > 0 && monsterhealth > 0)
{
checkAlive();
heroHitMonster();
checkAlive();
monsterHitHero();
}
attackinghero.setHeroHealth(herohealth);
attackedmonster.setMonsterHealth(monsterhealth);
}
где метод checkAlive() выглядит следующим образом:
public void checkAlive()
{
if(herohealth <= 0)
{
System.out.println("You have died.");
attackinghero.clearInventory();
inCombat = false;
}
else if(monsterhealth <= 0)
{
System.out.println("You have killed the "+attackedmonster.getmonsterName()+"!");
inCombat = false;
combatlocation.removeMonster(attackedmonster.getmonsterName());
}
else
{
//
}
}
Я пытаюсь заставить его закончить боевую последовательность, когда либо «hero» или «monster» health становится < = 0, однако в данный момент он заканчивает цикл while и, следовательно, производит результат попадания героя, даже если он убил монстра в своем первом попадании.
Это то, что в настоящее время «печатается на экране»
крыса теряет 5 здоровья! Вы убили крысу!
Герой теряет 1 здоровье!
Любая помощь очень ценится, спасибо заранее.
не ваш ответ, но хорошая практика программирования: использование в то время как (inCombat) вместо того, чтобы время (inCombat ! = false). – Batty
Вы получаете сообщения «Ты умер» и/или «Ты убил ..»? Также, если вы на 100% подтвердили, что цикл не выходит? –
Это не решение, но, возможно, делает ваш код менее загадочным. Вы должны знать, что 'if (x! = False)' совпадает с 'if (x == true)', который является таким же, как 'if (x)' поэтому, возможно, измените 'while (inCombat! = False)' to 'while (inCombat)'? – Pshemo