# Schuss mit Timer



## Guest (3. Apr 2008)

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..


```
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


----------



## Quaxli (4. Apr 2008)

> Wie und wo müsste ich die TimerFunktion einsetzen.



Gar nicht. Das ist meines Erachtens ein falscher Lösungsansatz.

Es scheint sich mehr um ein konzeptionelles Problem zu handeln. Mit dem o.a. Code kann man auch nicht viel anfangen, wenn man den Rest nicht kennt. Poste mal lieber die Klasse Laser und beschreibe uns, wie Du sie verwendest, d. h. welche Methoden z. B. periodisch und in welcher Reihenfolge durch deine Spielschleife aufgerufen werden.


----------



## Xams (4. Apr 2008)

Prinzipiell müsste Polyline das sein was du suchst


----------

