因此,有些背景信息对我来说是编程的新手,并且仍在学习中,因此对我犯下的小错误深表歉意。我正在制作自己的基于文本的游戏,只是为了进一步练习等。

这是指向dropbox上所有内容的链接,以获取更多上下文:
https://www.dropbox.com/sh/uxy7vafzt3fwikf/B-FQ3VXfsR

我目前正在尝试为我的游戏实现战斗系统,并且遇到了战斗序列在需要时没有结束的问题。 “战斗序列”是一个while循环,如下所示:

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
    {
        //
    }
}


当“英雄”或“怪兽”的生命值变得但是,它目前正在完成while循环,因此即使英雄在第一次击中杀死怪物后,也会产生被击中的结果。

这就是当前正在“打印到屏幕上”的内容

老鼠失去5点生命!
你杀了老鼠!

英雄失去1点生命!

感谢您的任何帮助,在此先感谢。

最佳答案

checkAlive不应为空,它应为布尔值并应返回inCombat,在函数startCombat中,您应该执行inCombat = checkAlive();。

10-04 09:55