Hallo Leute, versuche grad ein Weltraumspiel zu schreiben. Unten ist ein Raumschiff und schießt auf herunterfallende objekte.., sind also nur die y koordinaten wichtig..
Das Schießen habe ich in einer ForSchleife realisiert. Wenn ich nun schieße, wird die Schleife so schnell behandelt, dass ich nur das Endergebnis sehen, also wenn ich von y=500 schieße, sehe ich den schuss(als bild), bei y=200..
Natürlich kann ich die Werte in der Forschleife ändern, sodass der schuss dann z.B. bei y=100 landet..
Wie muss ich den Timer einbringen, damit z.B. jede Sekunde oder alle 500ms die For-Schleife ausgeführt wird..Weil ich so z.B. irgendeine taste drücken müsste, damit der schuss automatisch von y=ganz unten nach y=0 fliegt..
Ich wäre sehr dankbar für eure Hilfe
Das Schießen habe ich in einer ForSchleife realisiert. Wenn ich nun schieße, wird die Schleife so schnell behandelt, dass ich nur das Endergebnis sehen, also wenn ich von y=500 schieße, sehe ich den schuss(als bild), bei y=200..
Natürlich kann ich die Werte in der Forschleife ändern, sodass der schuss dann z.B. bei y=100 landet..
Wie muss ich den Timer einbringen, damit z.B. jede Sekunde oder alle 500ms die For-Schleife ausgeführt wird..Weil ich so z.B. irgendeine taste drücken müsste, damit der schuss automatisch von y=ganz unten nach y=0 fliegt..
Code:
int zeit = 5000; //milliseconds
ActionListener taskPerformer = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
for(int n=1;n<150;n++)
{
getInitialDelay(zeit=1000);
y=y-25;
if(y==0)
{
Laser.setBounds(x,800,160,230);
y=y+550;
}
}
}
private void getInitialDelay(int i) {
// TODO Auto-generated method stub
}
};
public void keyPressed(KeyEvent event) //BEWEGUNG
{
switch(event.getKeyCode())
{
case KeyEvent.VK_LEFT : {
if(x!=0)
{
x=x-35; //LINKS,
}
Raumschiff.setBounds(x, 550, 160, 230);
break;
}
case KeyEvent.VK_RIGHT : {
if(x!=1000)
{
x=x+35; //RECHTS,
}
Raumschiff.setBounds(x, 550, 160, 230);
break;
}
case KeyEvent.VK_SPACE : {
if(y!=0)
{
new Timer(zeit, taskPerformer).start();
}
Laser.setBounds(x,y, 160, 230);
Laser.setVisible(true);
PlaySound sound = new PlaySound();
break;
}
}
}
Ich wäre sehr dankbar für eure Hilfe