【发布时间】:2013-12-25 22:13:08
【问题描述】:
我一直在使用带有刻度和渲染线程的游戏循环结构来用 Java 编写游戏。
我将使用 2 个示例来解释我的问题。假设我们有一个 World 类,它保存所有实体的位置。然后,游戏循环循环遍历所有触发其update() 方法的实体。
示例 1
如果一个Monster 想要攻击另一个Monster,它将如何访问它周围的其他实体列表以进行攻击?如果这是通过传入本地实体列表来完成的,那么通过调用它的recieveAttack() 方法直接攻击另一个Monster 是否是正确的方法,或者攻击怪物触发某种标志会更好,包括与攻击相关的数据。然后,游戏循环还可以循环遍历所有这些标志并触发适当的攻击。
示例 2
另一个例子是如果Ship 创建了Rocket 但Ship 然后爆炸了。如果它是在 Ship 类中创建的,它如何仍然存在?
实际问题
我应该如何构建我的游戏以实现此类互动?我知道一些解决方法,比如在调用 update() 时传递主游戏类,但我意识到这非常粗略!
【问题讨论】:
-
"..通过调用recieveAttack()方法直接攻击另一个怪物是不是正确的方法"我不这么认为。它应该有一个
attack(Monster)方法。请注意,被攻击的Monster可能会选择runAway();) -
我想我的意思是,一个怪物应该攻击另一个怪物,还是应该一个怪物告诉世界它想攻击另一个怪物。
-
“怪物应该告诉世界” 鉴于任何个体怪物对“世界”影响不大,我会说:A)世界不会折腾。 B) 使用其他方法。
标签: java game-engine