'忽略'一个没有完全删除它的对象

时间:2018-05-23 00:36:18

标签: java bluej

我正在制作一个基本的太空入侵者风格的游戏,玩家可以移动船只并射击敌人。敌人没有枪支,但玩家在船的两侧都有一把枪。如果船被摧毁,如果前一艘船被摧毁,那么摧毁它的枪将获得(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

0 个答案:

没有答案