Bonusová lekce 06
Nejprve jsme dokončili program Mandaly z minula.
Hlavním tématem této lekce byla komponenta časovače - JTimer
.
Programovali jsem hru Pong, ve které se míček odráží od stěn.
Hry se typicky zobrazují akci po snímcích, podobně jako animované filmy. To znamená, že
například 20x za sekundu hra připravuje nový snímek obrazovky
s mírně posunutými postavičkami ve hře.
Budeme tedy potřebovat, aby nám někdo vyvolával v pravidelném intervalu 50 ms
(20x za sekundu) metodu, ve které o kousek pohneme objekty na obrazovce.
To umožňuje komponenta JTimer
(časovač).
Časovač vyvolává po stanoveném intervalu
událost actionPerformed(ActionEvent evt)
a v její obsluze budeme moct posouvat souřadnice míčku.
Souřadnice míčku (komponenty JLabel
) jsou uložené ve vlastnosti
location
. Voláme tedy:
// Zjisteni souradnic Point souradnice = labMicek.getLocation(); Integer micekX = souradnice.x; Integer micekY = souradnice.y; // Zmena souradnic X, Y micekX = micekX + 5; micekY = micekY + 5; // Nastaveni novych souradnic souradnice.x = micekX; souradnice.y = micekY; labMicek.setLocation(souradnice);
Zajímavý problém je testování, zda míček nenarazil do stěny. Rozměry okna se zjistí:
Integer sirkaPlochy = contentPane.getWidth(); Integer vyskaPlochy = contentPane.getHeight();
Nyní je potřeba testovat čtyři podmínky:
micekX + sirkaMicku < sirkaPlochy micekX > 0 micekY + vyskaMicku < vyskaPlochy micekY > 0
Pokud některá není splněna, je potřeba obrátit posun míčku v příslušném směru.
Materiály z lekce
Materiály jsou ke stažení zde: lekce06.7z
Archív si stáhněte, například na plochu. Celý jej rozbalte přímo do C:\
Archív totiž už obsahuje složku
Java-Training
a materiály se tím pádem vloží na to správné místo do
C:\Java-Training\Projects\Lekce06
.