gpt4 book ai didi

java - 为什么满足 "if ... <=0"标准时没有任何反应?

转载 作者:行者123 更新时间:2023-12-01 22:17:22 25 4
gpt4 key购买 nike

我有一个玩家控制的对象,其生命值设置为 100。敌人每击中一次,它就会下降。问题是,在生命值达到 0 后,它仍然会进一步陷入负面状态。我有一个弹出窗口集

private void playerHealth(){
if (player.health <= 0)
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
}

所以理论上,它应该在健康值 <=0 后弹出。但是,当我尝试运行它时,它会立即打开和关闭。我一瞬间就能看到 window 。如果我删除

JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);

并将其替换为,

player.isAlive = false;

(玩家、敌人和所有子弹的 isAlive 设置为 true),生命值将继续减少到负值以上。

这部分也可能有帮助:它是删除死去的敌人和子弹的代码,对于玩家来说没有类似的东西,所以这可能是问题所在。

private void removeDead(){
for (int i = 0; i <bullets.size(); i++){
if (bullets.get(i).isAlive == false )
bullets.remove(i);
}

for (int i = 0; i <mobs.size(); i++){
if (mobs.get(i).isAlive == false )
mobs.remove(i);
}

for (int i = 0; i <mobBullets.size(); i++){
if (mobBullets.get(i).isAlive == false )
mobBullets.remove(i);
}


bullets.trimToSize();
mobs.trimToSize();
mobBullets.trimToSize();
}

因此,我们非常感谢任何帮助。谢谢。 (所有代码都来自在线教程,这就是为什么我什么都不知道。)

最佳答案

如果您希望执行这两个语句,请将它们放在一个 block 中:

private void playerHealth() {
if (player.health <= 0) {
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
}
}

如果没有花括号,System.exit(0);不是 if 语句的一部分,并且将始终被执行,这解释了 it just opens and closes immediately.

关于java - 为什么满足 "if ... <=0"标准时没有任何反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30729651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com