此外,当AI玩家自动做出选择时,人类玩家会收到做出决定的提示。可能有无限数量的玩家子类,每个子类都有一个人和人工智能版本。因为Java没有真正的多重继承,所以我目前的解决方案是使用AI玩家继承的AI接口和Human继承的人工接口。这些接口中的每一个都有一个唯一的makeDecision()方法,用于每个可能的决策。从决策界面重写代码很好,因为不同类型的玩家不应该拥有相同的AI。下面是我的代码结构的一个简单示例:{
int
我正在调用我的AI类中的一个方法,该方法旨在计算我绘制的角斗士对象实际需要结束的位置。我向该方法传递了一个列表,其中包含我想要放置的所有对象。AI类之前的一个方法已经确定了它们之间的距离,我将其存储为gladiator0..1..2..etc.movementGoal。这意味着我迭代列表的标准方法将不起作用,因为我需要关于另一个角斗士的移动决策的信息,以便在这些决策交互时找出任何一个角斗士的实际移动。我在Ai类中的方法如下所示:
public void moveAI(List<Gladiator&g