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í)
m (Přejmenováno na Cvičení, doplněny kategorie.)
 
(Nejsou zobrazeny 4 mezilehlé verze od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]]
+
[[Category:VSE]][[Category:Škola]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:GUI]]
[[Category:Informatika]]
+
[[Category:PRO]]
+
 
+
[[Category:VSE]]
+
[[Category:Informatika]]
+
[[Category:PRO]]
+
  
 
== Doporučená cvičení ==
 
== Doporučená cvičení ==
Řádka 39: Řádka 33:
 
* Využijete třídu <code>java.util.ArrayList</code> pro ukládání instancí třídy <code>Auticko</code>.
 
* Využijete třídu <code>java.util.ArrayList</code> pro ukládání instancí třídy <code>Auticko</code>.
  
[[Category:VSE]]
 
[[Category:Informatika]]
 
[[Category:PRO]]
 
  
 
== Samostatná práce ==
 
== Samostatná práce ==
Řádka 66: Řádka 57:
 
**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 69:
 
-->
 
-->
 
==== 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ě ====
+
=== Pro rok 2011/12 ===
 +
 
 +
==== 7. Záchranář ====
 +
* Na obrazovce jsou čtyři útesy, na kterých se pasou ovce.
 +
** Nakreslete například tak, že v horní části obrazovky bude zelený obláček (útes) a na něm bude stát ovce.
 +
* Protože je útes úzký, ovce se občas zřítí.
 +
** Po zadané nebo náhodné době některá z ovcí přejde o sloupeček doleva a padá směrem dolů.
 +
* Na spodním okraji obrazovky se pohybuje záchranná síť, pomocí které padající ovci zachytíte.
 +
* Hrajete na čas, počítá se, kolik ovcí jste zachránili.
 +
* Síť se pohybuje vpravo a vlevo klikáním na pravé a levé tlačítko myši.
 +
 
 +
=== Obtížnější zadání: pro zájemce ===
 +
==== Ovčí bludiště ====
 
*Ovce musí projít bludištěm.
 
*Ovce musí projít bludištěm.
 
*Ovce jde vždy k nejbližšímu trsu trávy.
 
*Ovce jde vždy k nejbližšímu trsu trávy.
Řádka 101: Řádka 114:
 
*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 ===
 +
; Pohybující se objekty
 +
* Vytvořte třídy pro každý typ pohybujících se objeků
 +
* Objekt bude mít informace o aktuální pozici.
 +
* Objekt bude mít informace o pozici, kam se pohybujete.
 +
* Ideálně to budou třídy potomky třídy Figurka, která bude realizovat načtení obrázku a další akce, které jsou pro všechny typy pohybujících se objektů společné (pozici).
 +
; Hra
 +
* Vytvořte si třídu Hra s metodou <tt>hrej()</tt>. 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>
 +
; GUI
 +
* 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>!!!
 +
; Užitečné
 +
* 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''+1))+MIN; </code>
 +
** (Btw. pamatujete na Excel? ;))
 +
; Obecná pravidla
 +
* Nezapomeňte dodržovat [[Konvence#Java|konvence pro psaní programů v Javě]].

Aktuální verze z 14. 4. 2015, 10:15


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

Pro rok 2011/12

7. Záchranář

Obtížnější zadání: pro zájemce

Ovčí bludiště

Návod

Pohybující se objekty
Hra

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

GUI
Užitečné
Obecná pravidla
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje