首页 > 解决方案 > Java 游戏:同时射击多个玩家

问题描述

我正在开发一款玩家可以射击子弹的游戏。我正在遍历游戏中的活跃玩家列表,并在玩家靠近时向他们射击。除了两个或多个玩家同时互相射击的情况外,它最有效。

问题:

当两名玩家互相射击(同时发射相同数量的子弹)时,一个人死了,但另一个人仍然活着。

结果:

两名玩家应该同时死亡。

我将如何实施这种两个玩家都应该死的情况?

我认为它必须处理 for 循环之一。由于列表中的第一个玩家将首先射击,第二个玩家将首先达到 maxDamage,但是我希望他们同时达到 maxDamage。

游戏如何运作:

动画发生在一个倒计时并执行放置的动作的单回合中。

每回合有4个移动槽

            
            for (Player p : listRegisteredPlayers()) {
                if (!p.isDamageMaxed() && !p.isSunk()) {
    
                    // Apply damages if they collided with anyone
                    damagePlayers(leftShoots, p, Direction.LEFT, slot);
                    damagePlayers(rightShoots, p, Direction.RIGHT, slot);
                }

                if (p.isDamageMaxed() && !p.isSunk()) {
                    p.setSunk(slot);
                }
            }

        }

标签: javafor-loop

解决方案


你描述的行为清楚地意味着如果有人死了,那么他就不能再开枪了。现在,player1 向 player2 射击,而 player2 向 player1 射击。现在,这似乎发生在您的情况下:

玩家 1 射击 玩家 2

玩家2死了

player2没有射门,因为他死了

解决方案似乎是将射击与伤害分开。您需要在发生射击的地方实现一个循环,但玩家还没有死亡。您只需计算他们的伤害并从他们的生命中减少它,但他们应该在循环结束时仍然活着。然后,在下一个循环中评估玩家的健康状况并确保应该死的人都死了。

如果您需要更多详细信息,则需要提供更多详细信息。


推荐阅读