Myš a obrázky v Javě — cvičení

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Zadání: Doplnění zadání)
(Samostatná práce: Oprava zadání, dodání návodu.)
Řádka 66: Řádka 66:
 
**Pokud je kurzor myši ve stejné výši jako ovce, ovce se nepohybuje.
 
**Pokud je kurzor myši ve stejné výši jako ovce, ovce se nepohybuje.
 
**Zajímá nás pouze souřadnice Y kurzoru myši, pozice ve vodorovném směru není podstatná.
 
**Zajímá nás pouze souřadnice Y kurzoru myši, pozice ve vodorovném směru není podstatná.
 +
*Počítáte, kolik vlků proběhlo předtím, než byla ovce sežrána.
 +
 
==== 2. Hra na ovečky (2) ====
 
==== 2. Hra na ovečky (2) ====
*Jako zadání 1), ale na obrazovce jsou dvě ovce.
+
*Jako zadání 1), ale vlci vybíhají pouze zleva. Zato jsou na obrazovce dvě ovce.
 
*Ovce se pohybují obě ve stejném sloupci, jedna se ovládá klávesami S a W, druhá klávesami L a O.
 
*Ovce se pohybují obě ve stejném sloupci, jedna se ovládá klávesami S a W, druhá klávesami L a O.
 
*Ovce se mohou překrýt (mohou být obě na stejném místě obrazovky).
 
*Ovce se mohou překrýt (mohou být obě na stejném místě obrazovky).
Řádka 76: Řádka 78:
 
-->
 
-->
 
==== 3. Stříhání ovcí ====
 
==== 3. Stříhání ovcí ====
*Na obrazovce se náhodně na nějakou dobu objevují ovce, vy je kliknutím musíte ostříhat.
+
*Na obrazovku náhodně vbíhají ovce, vy je kliknutím musíte ostříhat.
*Počítá se počet ovcí, které jste ostříhali.
+
*Ovce se objeví na náhodném místě, vyrazí náhodným směrem stále rovně a po zadané době zmizí.
 +
*Prvním kliknutím ovci ostříháte z jedné třetiny, druhým z druhé třetiny a třetím úplně.
 +
*Počítá se počet ovcí, které jste ostříhali úplně.
 +
 
 
==== 4. Pasáček ovcí ====
 
==== 4. Pasáček ovcí ====
*Na náhodných místech se objevuje tráva
+
*Na náhodných místech se objevuje tráva a po krátké době zase zmizí.
 
*Ovce jde vždy směrem ke kurzoru myši, pohybuje se ale konstantní rychlostí.
 
*Ovce jde vždy směrem ke kurzoru myši, pohybuje se ale konstantní rychlostí.
*Náhodně vbíhají na obrazovku vlci
+
*Když ovce přijde na místo, kde je trs trávy, sežere tento trs.
 +
*Vaším úkolem je nechat ovci sežrat co nejvíce trsů trávy.
 +
 
 
==== 5. Malý princ ====
 
==== 5. Malý princ ====
 
*Uprostřed obrazovky je Květina
 
*Uprostřed obrazovky je Květina
*Na obrazovku náhodně vbíhají beránci
+
*Na obrazovku náhodně vbíhají beránci. Vyběhnou z náhodného místa na okraji obrazovky a míří přímo ke květině.
 
*Musíme květinu ochránit tak, že kliknutím zavřeme beránka do bedýnky (zmizí).
 
*Musíme květinu ochránit tak, že kliknutím zavřeme beránka do bedýnky (zmizí).
 +
 
==== 6. Obrana zahrady ====
 
==== 6. Obrana zahrady ====
 
* Spodní okraj obrazovky je ohrada zahrady se vzácnými květinami
 
* Spodní okraj obrazovky je ohrada zahrady se vzácnými květinami
 
* Z horního okraje v náhodném místě vybíhají ovečky
 
* Z horního okraje v náhodném místě vybíhají ovečky
* na spodním okraji se pohybuje kurzorem myši plošina, ze které se směrem vzhůru vystřeluje síť.
+
* Na spodním okraji se pohybuje plošina, ze které se směrem vzhůru vystřeluje síť.
 
* Ovce nesmí dojít na spodní okraj obrazovky.
 
* Ovce nesmí dojít na spodní okraj obrazovky.
 +
* Plošina se pohybuje vždy po spodním okraji (nemůže nahoru ani dolů), pohybuje se směrem ke kurzoru myši.
 +
* Síť se vystřelí kliknutím myši. Letící síť kreslit nemusíte, síť letí nekonečně rychle. Jakmile síť vystřelíte, ovce v daném sloupci okamžitě zmizí.
  
 
==== Obtížnější zadání: Ovčí bludiště ====
 
==== Obtížnější zadání: Ovčí bludiště ====
Řádka 101: Řádka 111:
 
*Trávu umísťujete kliknutím myši.
 
*Trávu umísťujete kliknutím myši.
 
*Máte omezený počet trav pro dané bludiště.
 
*Máte omezený počet trav pro dané bludiště.
 +
 +
=== Návod ===
 +
 +
* Vytvořte třídy pro každý typ pohybujících se objeků
 +
** ideálně to budou potomci třídy Figurka, která bude realizovat načtení obrázku a další akce, které jsou pro všechny třídy stejné.
 +
** třída bude mít informace o aktuální pozici
 +
** třída bude mít informace o pozici, kam se pohybujete.
 +
* Vytvořte si třídu Hra s metodou hrej():
 +
** Dokud nenastaly podmínky pro konec hry, provádějte opakovaně cyklus, ve kterém
 +
**# Necháte objevit se nebo zmizet objekty, které se tak mají chovat.
 +
**# Posunete automaticky se pohybující objekty (řekne jim, ať se sami posunou).
 +
**# Uživatelem ovládané objekty posunete patřičným směrem (řekne jim, ať se sami posunou).
 +
**# vyžádáte si překreslení okna metodou <code>repaint()</code>
 +
**# Počkáte nějaký zadaný čas:
 +
<code>
 +
            try {
 +
                Thread.sleep(''počet milisekund, které čekám'');
 +
            } catch (InterruptedException ex) {}
 +
</code>
 +
* Vytvořte grafické plátno a listener, který bude reagovat na události v plátně.
 +
** Pokud nastane událost, nastavte uživatelem ovládaným objektům správný směr, kam se budou pohybovat.
 +
** !!! Pozor, pouze nastavíte směr. Samotný pohyb se bude realizovat později, až si to vyžádá metoda <code>hrej()</code>!!!
 +
* Potřebujete náhodná čísla. Pro náhodné číslo od MIN do MAX zapište:
 +
** <code> int nahodne = (int) Math.floor(Math.random()*(''MAX''-''MIN''))+MIN; </code>
 +
** (Btw. pamatujete na Excel? ;))

Verze z 31. 12. 2010, 18:48


Obsah

Doporučená cvičení

Přesun autíčka tažením

Nápověda:

Nastavení pozice pomocí souřadnic

Nápověda:

Změna vzhledu autíčka

Nápověda:

Jedoucí autíčko

Nápověda:

Mnoho autíček

Nápověda:

Samostatná práce

Jak zjistím číslo svého zadání?

Která úloha je povinná pro konkrétního studenta OA?

  1. vezměte své číslo v třídní knize
  2. přičtěte k němu konstantu letošní posun (pro rok 2010/11 je letošní posun = -1)
  3. výsledek vydělte počtem zadání a spočtěte zbytek po dělení (viz 4. třída základní školy)
  4. zbytek po dělení zvyšte o jedničku a máte číslo svého zadání.

(Více o funkci celočíselné dělení (modulo))

Zadání

1. Hra na ovečky

2. Hra na ovečky (2)

3. Stříhání ovcí

4. Pasáček ovcí

5. Malý princ

6. Obrana zahrady

Obtížnější zadání: Ovčí bludiště

Návod

           try {
               Thread.sleep(počet milisekund, které čekám);
           } catch (InterruptedException ex) {}

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje