Logo Czechitas

Domovská stránka

Intenzivní kurz Programuju: Java

10 týdenní kurz Javy pro začátečnice

Vloženo: 5. 4. 2016

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.