Gierka java... skok bohatera.

0

Witam, postanowiłem napisać jakąś prostą gierkę, a przy okazji poznać nieco bliżej javę. Wstawiłem do Labela obrazek jpg i ustawiłem, że po naciśnięciu określonej strzałki obiekt przesuwa się w określonym kierunku... działa. Problem pojawił się przy skoku.

if(e.getKeyCode() == KeyEvent.VK_SPACE){				
			
			int i = 0;
				while(i < 30){
					plansza.pobierzBogatera().ustawObiekt((plansza.pobierzBogatera().x), (plansza.pobierzBogatera().y-i));
					try {
						Thread.sleep(20);
					} catch (InterruptedException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					i+=1;
				}
			} 

Odnoszę wrażenie, że metoda PaintComponent, a konkretnie repaint() wywołuje się dopiero po wykonaniu całej pętli. Sprawa wygląda tak, że po naciśnięciu klawisza spacji, leci sobie pętla zwiększając zmienną i, ale w ogóle nie wyrysowuje poszczególnych kroków, a jedynie po zakończeniu działania pętli.
Mógłby ktoś mnie nakierować na dobrą drogę bo chyba coś pokręciłem ;P
Z góry dzięki!

0

Zobacz tu moze znajdzesz cos co Ci pomoze:
http://zetcode.com/tutorials/javagamestutorial/

0

Dobrze ci się wydaje.

Pętlę masz zapewne w keyPressed, a więc w wątku Swinga. Cała ta pętla blokuje ten wątek, przez co cały interfejs przestaje odpowiadać. W tych metodach (listenerach) nie powinno się usypiać.
W tej metodzie pobierz tylko wciśnięte klawisze, a sam skok obsłuż w osobnym wątku liczącym logikę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1