我有一个玩家控制的对象,设置为100健康。每次击中敌人都会下降。问题是,在达到0健康状态后,它仍然会继续进入负面因素。我有一个弹出窗口
private void playerHealth(){
if (player.health <= 0)
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
}
因此理论上,它应该在健康状况<= 0后弹出。但是,当我尝试运行它时,它会立即打开和关闭。我可以看到窗口瞬间。如果我删除了
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
并用say,
替换它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();
}
所以任何帮助都表示赞赏。谢谢。 (所有代码都来自在线教程,这就是为什么我什么都不知道。)
答案 0 :(得分:3)
如果要执行两个语句,请将它们包围在一个块中:
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.
答案 1 :(得分:0)
我同意previous answer。
但是,您需要知道将来如何避免此类问题。使用IDE或其他编辑器自动缩进代码。以下是对失败的if语句所做的事情:
private void playerHealth() {
if (player.health <= 0)
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
}
问题变得更加明显。
答案 2 :(得分:0)
如果你想在if语句中执行一段代码,你好像错过了{if if语句
if(something){
response;
}
所以它应该是这样的:
private void playerHealth() {
if (player.health <= 0) {
JOptionPane.showMessageDialog(null, "you lose");
System.exit(0);
}
}