Schuss mit Timer

Status
Nicht offen für weitere Antworten.
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..

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
 

Quaxli

Top Contributor
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben