Java - 检索某个类的对象

时间:2012-04-03 17:03:33

标签: java

有一段时间我在J2ME编程。我想现在创建“超级”游戏2D。首先考虑最重要的数据:

  • 游戏正在射击,你可以和士兵一起射击,向敌人射击
  • 每个士兵曾经是Soldier类的对象(在Sprite之后继承)
  • 每个士兵都能够生成子弹 - Bullet级的对象(也在Sprite之后继承)

我在这里遇到了问题。就是这样:子弹击中士兵。如何将士兵的物体转移到子弹的物体(反之亦然)以减少士兵的HP。

下一个数据一览:

  • Soldier类有静态字段HP
  • Bullet类有静态字段hit包含有关子弹力的数据

我有条件声明,检查玩家是否与trpas碰撞 - TiledLayer。这不是没问题。问题是检查与子弹的碰撞。 collidesWith()方法检查会与SpriteTiledLayerLayer的一次对象发生冲突。子弹的物体将会很多。是否有这样的选项来检查与某种类型的碰撞,而不是某种类型的某些对象(不检查与bullet1,bullet2,bullet3作为队列的碰撞,以及所有类型的Bullet)?

我的问题。

1.如果发生碰撞,我如何将Bullet的数据转移给Soldier?  2.我如何检测与Bullet类型的碰撞,而不是对象此类型x子弹号?

2 个答案:

答案 0 :(得分:0)

Object类有一个getClass()方法,它返回给定Object为实例的类的名称。这不是最好的编程实践,但它有效。如果您需要将Bullet数据“转移”到Soldier,请添加一个接受子弹/士兵的碰撞方法:soldierCollisionEvent(Bullet b),甚至是collision(Soldier s, Bullet b)。或者,您可以使用object-oriented programming让对象共享数据和事件,而不必担心(太多)类类型。

答案 1 :(得分:0)

你在J2ME中没有反思,所以没有Bullet.class或类似的东西。

即使有,它仍然没有帮助,因为你仍然必须(以某种方式)检查所有的子弹。

但是,你可以尝试做一些更聪明的事情,比如跟踪一些你知道更接近Soldier的子弹。如果您愿意,您甚至可以尝试使用高级算法/数据结构进行空间分区(k-d treesBVH),这些都是3D计算机图形的详细记录,并且在2D中使用时要简单得多。

祝你好运!

编辑:如果你只有一把子弹(比如说10个),就不需要所有花哨的东西。它只会使事情复杂化,只检查每个子弹的碰撞应该没问题。