Úkol 12: Dostihy

Program | Zadání v krocích | Zadání formou úkolu

Příběh hry

Na dostihovém závodišti se běží dostihy. Koně běží celkem 10 kol, který z nich vícekrát zaběhne kolo rychleji a stane se celkovým vítězem závodu?

Cíl hry

Žák se seznámí s relačním operátorem (je větší/menší), vymyslí logiku určení vítěze a procvičí si cyklus s daným počtem opakování.

Vstupní požadavky na žáka

  • Algoritmizace: posloupnost příkazů, reakce na vstup uživatele, nekonečný cyklus, cyklus s daným počtem opakování, neúplná podmínka, proměnná, porovnání hodnot, čekání po daný čas, čekání s danou podmínkou
  • Scratch: události klávesnice, událost po startu, práce s postavami a pozadím, práce s kostýmy, velikost postavy, opakuj stále, opakuj x krát, podmínka když, vyhodnocení dotyku, práce s proměnnou, skrývání a ukazování postav, náhodné číslo, pozicování, mluvící bublina 

Nové dovednosti

  • Algoritmizace: porovnání hodnot (je větší/menší)
  • Scratch: operátor porovnání (<)

Zadání pro žáky v krocích

  1. Vyber vhodné pozadí.
  2. Přidej bílého a hnědého koně. Vhodně uprav jejich velikost a umísti je na vhodné startovní pozice. Nápověda: Koně by měli být podobně velcí a mít stejnou startovní pozici.
  3. Zajisti, aby koně po stisku mezerníku vystartovali a přejeli scénu. Nápověda: Jejich rychlost pohybu by měla být náhodná, aby byl dostih napínavý.
  4. Přidej cílovou čáru, u která určí vítězného koně daného kola dostihu. Nápověda: Poté co jí jeden z koní protne, čára zmizí, aby se bod započítal jen tomu prvnímu.
  5. Přidej rozhodčího a vhodně uprav jeho velikost. Po ukončení desátého kola závodu řekne, který z koní je celkovým vítězem závodů. Nápověda: Dej si pozor na to, že desáté kolo je odběhnuté až poté co se jeden z koní dostane do cíle. Ošetři i případ remízy.
  6. Zajisti, aby se koním pohybovaly nohy.
  7. Bonusový úkol: 
    • Vylepšit program poté co jeden z koní zvítězí, například zůstane jen vítězný kůň a druhý se skryje, fantazii se však meze nekladou.

Zadání pro žáky ve formě úkolu

  • Dva koně běhají dostihy, ten který jako první protne cílovou čáru vyhrává dané kolo dostihu. Oba koně se rozbíhají po stisku mezerníku a jejich rychlosti se liší.
  • Dostih má 10 kol, kůň který vyhraje více jednotlivých kol, se stane celkovým vítězem závodů. Nápověda: Dej si pozor na to, že desáté kolo je odběhnuté až poté co se jeden z koní dostane do cíle. Ošetři i případ remízy.
  • O celkovém vítězi nás informuje rozhodčí.
  • Bonusový úkol: 
    • Vylepši program poté co jeden z koní zvítězí, například zůstane jen vítězný kůň a druhý se skryje, fantazii se však meze nekladou.

Program

Řešení a metodické poznámky

  1. Vybereme vhodné pozadí.
  2. Program koní:
    1. Je vhodné si koně pojmenovat (hnědý kůň, bílý kůň).
    2. Je důležité, aby koně měli stejnou výchozí pozici a stejnou velikost. (Poznámka: Střed každého koně je trochu jinde, proto se kůň musí vhodně napozicovat, aby ani jeden neměl náskok.)
    3. Vizualizace běhu (pohyb nohou): přes změnu kostýmů a krátké čekání. Musí se použít samostatný cyklus opakuj stále, pokud bychom tyto změny kostýmů vložili do cyklu pro běh, koně by to značně brzdilo a sekalo. (Využijeme příkazy po stisknutí startu, opakuj stále, další kostým, čekej.)
    4. Po stisku mezerníku se koně rozběhnou. Je důležité koně vždy po stisku mezerníku umístit na jejich startovní pozici (skoč na pozici X Y). Ošetříme i směr kterým se vydají (nastav směr na 90). Pro běh použijeme cyklus s daným počtem opakování (Poznámka: to kolikrát má cyklus proběhnout musí žáci vyladit, také to záleží na rozmezí počtu kroků.) Rozdílné rychlosti koní zajistíme tím, že se posouvají o náhodný počet kroků.
  3. Program cílové čáry:
    1. Cílová čára slouží k vyhodnocení, který kůň byl v daném kole rychlejší.
    2. Umístíme ji na vhodnou pozici a nastavíme ji směr 0, aby byla svisle.
    3. Pro logiku dotyku koní musíme mít založené proměnné “Hnědý kůň” a “Bílý kůň”. Kůň který se startovní čáry dotkne jako první, dostane bod a čára zmizí (skryj se), aby se ji nemohl dotknout i druhý kůň.
    4. Proměnná “kolo” není pro program v ničem důležitá, má pouze informativní charakter, kolik kol již koně odběhli. Tedy není nezbytně nutné ji zakládat.
    5. Po stisku mezerníku musíme čáru ukázat (protože po dotyku koní je skrytá) a můžeme změnit proměnnou kolo, není však nezbytné ji ve hře vůbec mít. Pokud tuto proměnnou měníme je vhodné přidat chvíli čekání, abychom nemohli během jednoho běhu koní namačkat kol několik.
  4. Program rozhodčího:
    1. Rozhodčí slouží k tomu, aby nám oznámil celkového vítěze.
    2. Umístíme jej na vhodnou pozici a upravíme jeho velikost.
    3. Rozhodčí čeká dokud nenastane situace, že koně doběhli do cíle celkem 10x, zde je více možností jak to zjistit. Musíme si dát pozor na to, že po startu desátého kola ještě chvíli trvá, než jej koně doběhnou. 
      • Elegantním řešením je použít operátor součet proměnných hnědý kůň a bílý kůň (čekej dokud nenastane hnědý kůň + bílý kůň = 10).
      • Méně elegantní variantou, ale pro žáky pravděpodobně více intuitivní je možnost využít proměnnou počet kol, zde však musíme ještě chvíli počkat, než koně proběhnou naposledy cílovou čáru. (čekej dokud nenastane kolo = 10, čekej 3 sekund)
    4. Poté co uplynulo desáté kolo pomocí podmínky určíme vítěze, zde používáme operátory porovnání (větší, menší, je rovno). Jedná se o matematiku, tedy můžeme využít tři samostatné podmínky když s operátorem porovnání. Čímž ošetříme případ vítězství hnědého koně, vítězství bílého koně a remízu. Rozhodčí zahlásí, kdo se stal celkovým vítězem.
  5. Bonusový úkol:
    1. Poté co jeden z koní zvítězí můžeme dodat do programu nějaká vylepšení, například zůstane zobrazený jen vítězný kůň, to můžeme udělat přes změnu pozadí (každý kůň má své vítězné pozadí) nebo přes vyslání zprávy, s tím se však žáci zatím při svém programování nesetkali.

Možné problémy a komplikace

  • Koně neběhají správným směrem – není nastaven směr 90.
  • Čára není svisle – není nastaven směr 0.
  • Koně nedoběhnou až k čáře – je nastaven malý počet opakování nebo je rychlost (počet kroků) koní příliš malá.
  • Koně sice pohybují nohama, ale brzdí to jejich pohyb do cíle – pohyb nohama a pohyb do cíle musí být v oddělených cyklech.
  • Postavy se neustále zmenšují nebo zvětšují – není upravena procentuální velikost, ale použit příkaz změň velikost o a kvůli tomu jsou postavy po každém startu větší nebo menší.
  • Žádané proměnné nejsou v seznamu – proměnné nejsou deklarovány.
  • Jeden z koní stále vyhrává –  jeho startovní pozice je ve výhodě nebo není dobře nastavený počet kroků.
  • Čára zmizí a už se neukáže – po stisku mezerníku chybí příkaz ukaž se.
  • Oba koně protínají čáru a dostávají body – chybí skrytí čáry po protnutí koněm.
  • Rozhodčí špatně nebo vůbec hlásí vítěze – chyba v podmínkách vítězství, tato logika je pro poměrně náročná, proto v ní žáci mohou snadno udělat chybu.