Hru kámen-nůžky-papír jste už jistě někdy hráli, ale pravděpodobně ne proti stroji. V tomto díle seriálu si ukážeme, jak si hru naprogramovat a zahrát proti micro:bitu.
Jak hra funguje
Ke hře jsou potřeba dva – v našem případě micro:bit a lidský protihráč. Po stisku tlačítka A se na micro:bitu ukáže odpočítávání, ať máme čas na rozmyšlenou. Jakmile odpočítávání skončí, ukážeme rukou jeden ze symbolů a zároveň se na displeji micro:bitu zobrazí kámen, nůžky nebo papír. Kámen tupí nůžky, nůžky stříhají papír a papír zabalí kámen.
Hra funguje velice jednoduše – micro:bit nevidí, jaký symbol ukazujeme, a jen náhodně zobrazuje jeden ze tří obrázků. Přesto je hra zábavná.
Základy logiky – příkaz KDYŽ / JINAK
V programování se velice často rozhodujeme mezi několika možnostmi a k tomu používáme příkaz když/jinak. Bloky zacvaknuté uvnitř příkazu když se provedou pouze, když je splněná daná podmínka. Tu si můžeme představit jako větu (otázku), na kterou odpovíme pravda nebo nepravda (anglicky true/false).
Pokud chceme náhodně vykonávat příkazy zacvaknuté v sekci když, můžeme jako podmínku zvolit příkaz náhodně pravda/nepravda. Micro:bit nejprve náhodně nastaví podmínku na pravdu nebo nepravdu. Pokud je podmínka pravda, provede se příkaz ze sekce když. Pokud je podmínka nepravda, provede se příkaz ze sekce jinak.
Programujeme zjednodušenou hru (kámen a nůžky, papír nechce stranou)
Pojďme začít zjednodušenou verzí hry, kdy při stisku tlačítka A náhodně ukážeme kámen nebo nůžky. Ze sekce Vstup přidáme příkaz při stisknutí tlačítka A a do něj zacvakneme příkaz když ze sekce Logika (použijeme verzi příkazu když/jinak). Jako podmínku zvolíme náhodně pravda/nepravda ze sekce Matematika. Nakonec do příkazu když zacvakneme příkaz ukaž ikonu ze sekce Základní a obrázek změníme na kámen.
Stejným způsobem zacvakneme ještě jeden příkaz ukaž ikonu do jinak, ale tentokrát nastavíme obrázek na nůžky. Pokud se nám obrázky nelíbí, můžeme použít příkaz ukaž tvar a nakreslit vlastní obrázek.
Přidáváme papír a rozšiřujeme kód
Naše hra už funguje, ale není moc zábavná. Po stisku tlačítka A se náhodně ukáže kámen nebo nůžky, ale lidskému protihráči stačí neustále ukazovat kámen. Buď vyhraje (micro:bit ukáže nůžky), nebo hra skončí remízou (micro:bit ukáže také kámen).
Rozšíříme proto naši podmínku ještě o jednu možnost – klikneme na malé tlačítko plus u podmínky když. Tím se přidá další část, do které můžeme zacvaknout příkaz ukaž ikonu s obrázkem papíru. Jako podmínku opět zvolíme náhodně pravda/nepravda.
Když nyní stiskneme tlačítko A, micro:bit náhodně zvolí pravda nebo nepravda. Pokud zvolil pravdu, ukáže se kámen. Pokud nepravdu, znovu náhodně zvolí pravda nebo nepravdu. Při pravdě se ukáže papír, při nepravdě nůžky.
Vylepšení hry – přidáváme odpočítávání
Hra už funguje, jak má, ale můžeme ji ještě vylepšit. Co třeba před zobrazením obrázku přidat odpočet? K tomu použijeme bloky zobraz číslo a čekej, oba ze sekce Základní. Zobrazíme postupně čísla tři, dva a jedna a mezitím budeme čekat 100 ms (milisekund). To je desetina sekundy. Zdá se to málo, ale i příkaz zobraz číslo chvilku čeká, takže času bude dostatek. Výsledný program si můžete prohlédnout uprostřed stránky.
Co dál? Nápady na další vylepšení
Bylo to moc jednoduché? Zkuste hru vylepšit přidáním zvuků ze sekce Hudba, nebo místo odpočítávání nakreslete animaci pomocí příkazů ukaž tvar.
Naše hra není úplně spravedlivá, jeden symbol ukazuje více než ostatní. Zkuste hru chvilku hrát a zapisovat si, co micro:bit ukázal. Který symbol se ukazuje častěji? Přijdete na to, proč tomu tak je?