Domácí úkol - Nemo 2
V hodině jsme programovali Hledá se Nemo. Pohyb rybičkou v okně. Ovšem herně orientovaný, s použitím JKeyboard.
Úkolem je rozšířit tuto aplikaci o žraloka, který se bude samočinně hýbat.
Způsob pohybu může být podobný jako v přiloženém demu
nebo třeba podobně jako kulička ve hře hrou Ping Pong,
kterou jsme také probírali v hodině.
(Ano, toto je v podstatě podobné zadání jako úkol 6, jen tentokrát je to rozšíření aplikace z hodiny).
Nyní ale něco nového: Úkolem je zapracovat do aplikace test, zda se žralok nedotkl Nema. Anglicky se to nazývá collision detection. Pokud se tedy žralok dotkne Nema, rybička virtuálně umře. V demu prostě zmizí a objeví se na výchozím místě (např. v prostředku obrazovky). Jako bonus můžete například informovat uživatele, že přišel o 1 život.
Demo stahujte a zkoušejte odtud: Nemo2-Demo-heslo_czechitas.7z
Detekování kolize dvou JLabelů není nic složitého. Pozor ale, abyste se v tom nezamotaly. Nejde o matematiku, procvičíte si tím analytické myšlení. Zamyslete se, jak je nutné sestavit podmínky pro tyto tři diagramy:
Tip: Doporučuji nadefinovat lokální proměnné pro každý bod na obrázku a naplnit do nich správné hodnoty. Pak už bude sestavení podmínky celkem snadné.
private void priTiknutiCasovace(ActionEvent e) {
Integer nemoX;
Integer nemoY;
Integer nemoSirka;
Integer nemoVyska;
Integer zralokX;
Integer zralokY;
Integer zralokSirka;
Integer zralokVyska;
// Naplnte do promennych spravne hodnoty
// ... Vas kod pro pohyb Nema a zraloka ...
Integer bodAX;
Integer bodAY;
Integer bodBX;
Integer bodBY;
Integer bodCX;
Integer bodCY;
Integer bodDX;
Integer bodDY;
// Naplnte do promennych spravne hodnoty
// A nyni uz jen spravne sestavit podminku,
// ktera plati prave tehdy kdyz
// se JLabely prekryvaly
if (necoX < necoX && necoY < necoY
&& necoX > necoX && necoY > necoY) {
// Nastala kolize
}
}
}
Pokud budete mít s úkolem jakýkoliv problém, využjte naši facebookovou skupinu, kde vám rádi poradíme.
Hotový úkol zabalte 7-Zipem s heslem czechitas včetně šifrování jmen souborů a zašlete ho Kamčovi (mně) a Hance emailem.
