【发布时间】:2014-10-20 20:53:43
【问题描述】:
我遇到了一些困难,因为我不知道如何高效地编写代码。 我正在创建一个垂直滚动射击游戏,我想产生大量敌人。 在地图的某些 y 坐标处并给它们一个特定的 x 坐标。 如果一直在用几个敌人进行测试,并且在我的 Enemy-class 中,我现在使用的代码如下所示:
if (Background.bgY == -3972 && active == 0) {
active = 1;
type = 1;
centerX = enemyXstart4;
KnightmareGame.activated = 1;
KnightmareGame.activatedatY = Background.bgY;
}
这基本上是寻找滚动的背景是否在坐标 Y,激活类型 1 的敌人(炸弹)并将其起始坐标为 centerX,activatedatY。 这意味着对于每一个敌人,我都在编写这段代码......
然后在我的 KnightmareGame 类(其中包含在屏幕上绘制敌人的例程)中,我手动绘制每个敌人,看起来像这样:
g.drawImage(currentBomb, bo1.getCenterX(), bo1.getCenterY(), this);
g.drawImage(currentBomb, bo2.getCenterX(), bo2.getCenterY(), this);
g.drawImage(currentBomb, bo3.getCenterX(), bo3.getCenterY(), this);
在我的碰撞检测方法中,我还逐个检查每个敌人:
if (projectileRect.intersects(KnightmareGame.bo1.bombRectangle)) {
visible = false;
if (KnightmareGame.bo1.health > 0) {
KnightmareGame.bo1.health -= 1;
}
if (KnightmareGame.bo1.health == 0) {
Enemy.animateFire= true;
等等等等
问题是我的敌人总数超过了 50 个,所以如果我继续 1 对 1 编码,代码会变得非常混乱。
我当时的想法是,我可能会制作一个 数组列表,其中包含我想要生成敌人的所有 y 坐标及其随后的 x 坐标。 例如在 -3900 我想在 x 坐标 200 处生成一个敌人。在 -3800 在 x 坐标 300 处等。所以每个位置都包含 2 个变量 (x,y) 的数组列表
- 我只是(首先)不知道如何为这个数组列表编码。
- 第二个。我不知道如何自动化我的绘制方法,比如
g.drawImage(currentBomb, bo1.getCenterX(), bo1.getCenterY(), this);我正在考虑一个循环,但不知道代码如何...... - 碰撞检测:在这里,我还在一个代码块中为每个敌人进行碰撞检测,而不是将单个单独代码块中的每个敌人与我的弹丸进行比较。
有人知道怎么做吗?或者如果我应该以不同的方式来做,那么我现在在想什么?
非常感谢您的帮助!
【问题讨论】:
标签: java android arrays collision-detection