java - 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);
}
}
}
解决方案
你描述的行为清楚地意味着如果有人死了,那么他就不能再开枪了。现在,player1 向 player2 射击,而 player2 向 player1 射击。现在,这似乎发生在您的情况下:
玩家 1 射击 玩家 2
玩家2死了
player2没有射门,因为他死了
解决方案似乎是将射击与伤害分开。您需要在发生射击的地方实现一个循环,但玩家还没有死亡。您只需计算他们的伤害并从他们的生命中减少它,但他们应该在循环结束时仍然活着。然后,在下一个循环中评估玩家的健康状况并确保应该死的人都死了。
如果您需要更多详细信息,则需要提供更多详细信息。
推荐阅读
- gitlab-ci - Deployit 与 Gitlab 的集成
- c# - vs 2017 安装后加载类型库/DLL 时出错
- regex - Notepad ++:在某些字符串匹配后插入空白新行
- php - 移动自定义帖子类型的wordpress帖子及其类别以及类别的子父关系
- java - 如何将多个并行流传递给 Junit5 参数化测试?
- c# - 实体框架 - 首先来自数据库“无效列名'鉴别器'”的代码
- css - “保证金”出人意料地为
- java - 运行时字符串是否被实习?
- r - 在 R 中使用多个内核
- reactjs - 如何在 iOS 和 android 的 react-native 中的 MapView 底部添加 BoxShadow?