我正在用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变量,这只是一个例子。)
答案 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);