太空侵略者克隆运动和产生逻辑

时间:2012-01-10 05:23:55

标签: java loops

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

我知道当它们只是单个物体时如何使图像移动,但这些显然不止一个。我不想单独移动每一个,因为这会导致一些混乱的代码并使我的速度慢下来。

它基本上是一组加载到我的paintComponent(Graphics g)方法中的图像。所以,如果有一个基本的循环可以生成这些图像,并允许我像原来的太空入侵者一样移动它们,这将是伟大的!

到目前为止,我正在绘制入侵者:

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变量,这只是一个例子。)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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);