0

我正在用 Java 制作 Space Invaders 克隆。我在计算入侵者循环的运动和产卵时遇到了一些麻烦。我希望它们生成,检查屏幕边缘并进行基本运动。

当图像只是单个对象时,我知道如何使它们移动,但显然这些将不止一个。我不想单独移动每一个,因为这会产生一些混乱的代码并减慢我的速度。

它基本上是加载到我的paintComponent(Graphics g)方法中的一组图像。因此,如果有一个基本循环可以生成这些图像并允许我像在原始 Space Invaders 中那样移动它们,那就太好了!

到目前为止,我正在画这样的入侵者:

g.drawImage(invaderGreen.draw(), 100, 100, this);
g.drawImage(invaderGreen.draw(), 100, 100, this);
g.drawImage(invaderGreen.draw(), 100, 100, this);
g.drawImage(invaderGreen.draw(), 100, 100, this);
g.drawImage(invaderGreen.draw(), 100, 100, this);
//etc etc.

(我知道我需要更改 X 和 Y 变量,这只是一个示例。)

4

1 回答 1

0

将入侵者存储在列表或数组中。

List<InvaderGreen> invaders = new ArrayList<InvaderGreen>();
...

//spawn intial game state
invaders.add(new InvaderGreen(...)); //Hint: loop if you are creating 1+

然后更新游戏状态并使用循环绘制屏幕:

for (InvaderGreen oneInvader : invaders){
    oneInvader.move(); // let every invader calculate its new position
    oneInvader.drawSelf(graphics); //let every invader draw itself using Graphics g
} 

您可能想要创建某种 GameState 对象并将其传递给 move 方法: oneInvader.move(gamestate);

于 2013-09-12T22:01:34.383 回答