G
Guest
Gast
Hallo alle,
ich habe vor 4 Tagen angefangen mit Java zu programmieren, und muss ein Spielchen programmieren.
Im Spiel schießt ein Raumschiff auf herunterfallende Objekte..(alles 2d)
Das Raumschiff befinden sich bei x=0 y=550, also ganz unten bei mir..
Es kann zwar mit einer For-Schleife schießen, aber anscheinend passiert das so schnell, dass ich nur das Endergebnis sehe.
Wenn ich von Koordinate x=0, y=550 schieße, dann seh ich den Schuss bei z.B.x=0 y=100.
Ich hab mir gedacht, dass mit einer TimerFunktion dieses Problem behoben werden könnte, also dass ich z.B. nur 1 mal Space drücke und der Schuss automatisch alle y Koordinaten bis y=0 durchgeht..
Wie und wo müsste ich die TimerFunktion einsetzen. Vielen Dank für eure Hilfe
MfG
ich habe vor 4 Tagen angefangen mit Java zu programmieren, und muss ein Spielchen programmieren.
Im Spiel schießt ein Raumschiff auf herunterfallende Objekte..(alles 2d)
Das Raumschiff befinden sich bei x=0 y=550, also ganz unten bei mir..
Es kann zwar mit einer For-Schleife schießen, aber anscheinend passiert das so schnell, dass ich nur das Endergebnis sehe.
Wenn ich von Koordinate x=0, y=550 schieße, dann seh ich den Schuss bei z.B.x=0 y=100.
Ich hab mir gedacht, dass mit einer TimerFunktion dieses Problem behoben werden könnte, also dass ich z.B. nur 1 mal Space drücke und der Schuss automatisch alle y Koordinaten bis y=0 durchgeht..
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) {}
};
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);
break;
}
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
Wie und wo müsste ich die TimerFunktion einsetzen. Vielen Dank für eure Hilfe
MfG