我正在制作一个基本的太空入侵者风格的游戏,玩家可以移动船只并射击敌人。敌人没有枪支,但玩家在船的两侧都有一把枪。如果船被摧毁,如果前一艘船被摧毁,那么摧毁它的枪将获得(1 +(7-N))点。作为参考,这是我用来实现这个积分系统的代码:
public void destroy()
{
if (moveNum != 0)
{
if (moveNum <= 8)
{
points += 1 + (8 - moveNum);
moveNum = 0;
}
else
{
++points;
moveNum = 0;
}
}
else
{
++points;
}
moveNum++;
}
当玩家开火时,我有if语句,检查是否有敌人被击中以及是否被摧毁。 if语句是嵌套的,以便程序检查枪1或2是否击中三个敌人中的任何一个。同样,作为参考,这是if语句的基本格式:
if (playerPos + 1 == enemy2.position())
{
power = player.power(2);
enemy2.gotHit(power);
if (enemy2.health() <= 0)
{
player.destroy(2);
}
}
在这种情况下,程序检查gun2是否与敌人2具有相同的位置,在这种情况下敌人被击中并且受到的伤害等于枪的力量。如果敌人被摧毁(生命== 0),则如上所述,该枪被分配给该枪。
现在if语句被嵌套,以便(例如)它检查枪1是否击中敌人1,然后在if语句中,它检查枪2是否击中敌人2或敌人3。
检查以不同的系列重复:(gun1-enemy1,gun2-enemy2 / 3),(gun2-enemy1,gun1-enemy2 / 3)等。
问题是,即使敌人被摧毁,下一个if语句再次检查它,因为生命仍然为零,它会增加更多的分数。
所以我的问题是,如果一个敌人被摧毁,我如何在下一组if语句中忽略敌人?我读到我可以指定一个null
值,但我无法知道哪个敌人会被摧毁(当然我不会知道)。
PS对不起,如果这太长了,我已尽量做到尽可能短:P