9. Aktivita 5 - podmíněné větvení programu

Téma

Tematický celek

Použití podmíněného větvení programu

Motivační rámec

Multiplayer v interaktivní grafické aplikaci

Počet žáků

5-15

Věk žáků

10+

Pomůcky

PC odpovídajících parametrů,
webový prohlížeč Mozilla Firefox nebo Google Chrome,
zařízení s Androidem připojené k internetu,
případně emulátor zařízení s Androidem,
účet pro Google služby.

Stručný popis aktivity

Přihlášení k prostředí App Inventoru http://appinventor.mit.edu/
Tvorba, testy a ladění aplikace v online vývojovém prostředí.

Vhodné místo

Počítačová učebna

Cíle aktivity

Studenti si vyzkouší použití několika způsobů větvení programu.

Předchozí znalosti

Aktivita navazuje na předchozí lekci tohoto kurzu.

Časový plán

Fáze činnosti s přístrojem

Metody a formy, motivace

5-25m

Seznámení s tématem lekce. Volitelně ukázka funkční aplikace. Seznámení s tématem větvení programu. Neúplné podmíněné větvení "if", úplné podmíněné větvení "if / else", vícenásobné podmíněné větvení "if / else if / else". Volitelně nákres vývojových diagramů. Volitelně samostatná činnost žáků, vyhledávání informací k tomuto tématu.

Frontální výklad, ukázka, samostatná práce žáků

30-60m

Úprava vlastní aplikace dle ukázek a popisu v této lekci.

Samostatná a skupinová práce s využitím výukových materiálů tohoto kurzu

15-20m

Modifikace aplikace.

Samostatná a skupinová práce

15m

Prezentace prací žáků, sdílení poznatků, diskuze.
Motivace žáků k domácí práci.

Prezentace prací a diskuze

Hodnocení

Zpětná vazba je okamžitá. Student reflektuje vzdělávací cíle, svůj postup a dosažené výsledky. Student průběžně srovnává vlastní výsledky s výsledky ostatních studentů.

Návaznosti

Na tuto aktivitu navazují následující aktivity, které prohlubují a kombinují znalosti prostředí App Inventoru.

Poznámky

Pro případ výpadku připojení k internetu nebo technických problémů s App Inventorem doporučuji připravit záložní aktivitu, založenou na podobných principech blokového programování, například offline aplikaci MIT Scratch, BYOB nebo některou z variant programovacích prostředí LOGO.

s tipem, jak je možné pracovat s animacemi.

Aplikace pro ukázku podmíněného větvením programu

Opět přibylo několik komponent, především několik časovačů, loď pro druhého hráče, střela.

pamai_a050_conditional_statement_design.png

Ukázka části kódu aplikace, ve které je využito několik typů podmíněného větvení programu.

Nově přibyla funkčnost:

  • loď druhého hráče a obsluha jejího pohybu,
  • obsluha výstřelu při dvojkliku na loď druhého hráče, z pozice x:y lodi ve směru letu lodi,
  • animace letící střely,
  • animace motorů lodi druhého hráče,
  • obsluha kolize střely druhého hráče s lodí prvního hráče,
  • zastavení lodi prvního hráče po zásahu střelou druhého hráče,
  • obsluha kolize lodi druhého hráče s krystalem a počítání skóre,
  • obnova nastavení pro střelu a druhého hráče při stisku tlačítka reset,
  • timeout zabraňující opakování výstřelů rychle za sebou.

Významné bloky:

when ClockAnimaceAPohyb.Timer = časovač tikající po 100ms, řešící animaci (změnu obrázků) střely, v případě, že je letící. Animace motoru lodi druhého hráče. Řeší i zastavení lodi prvního hráče po zásahu střelou. Zastavení je řízeno proměnnou Ufo1_stoji, která je při zásahu nastavena na hodnotu 30. Loď stojí po dobu cca 30x 100Ms.

When ImageSprite_Ufo.ColideWith = V bloku kolize je navíc řešena obsluha zásahu střelou.

When ImageSprite_Ufo2.Touched  = detekce dvojkliku na loď druhého hráče. V totmto případě je snaha o odfiltrování dotyku, který nastává při ovládání směru pohybu lodi. Za dvojklik je považován dvojdotek lodi, který nastane v čase menším než 300Ms.

When ClockDetekceDvojklikuNaUfo2 = pomocný blok, který pomáhá při detekci dvojkliku.

pamai_a050_conditional_statement_blocks.png

Modifikace základní aplikace

Doporučené modifikace programu:

  • možnost střelby i pro prvního hráče, druhý hráč reagujicí na zásah,
  • animace střelby prvního hráče, animace lodi prvního hráče,
  • detekce kolize lodí hráčů a přenesení lodí na protilehlé strany plochy,
  • životy hráčů a odečítání při zásazích,
  • zastavení a vyhodnocení hry po určitém časovém intervalu / po dosažení počtu bodů.