Základy programování – 2. díl

9. 1. 2020 Minecraft

Vítejte u dalšího dílu programování v Minecraft: Education Edition. Dnes, se podíváme na lehce složitější programy, ve kterých využijeme, jak jsem slíbil v minulém díle, funkci if a základy logických funkcí.I nadále budeme využívat programu Code Conection a programovat v MakeCode, takže pokud jste náhodou zapomněli, jak je ovládat či spustit, doporučuji si přečíst 1. díl, ve kterém je vše dopodrobna popsáno a vysvětleno.

Agent

Než se ale pustíme do programování, potřebujete se seznámit ještě s hvězdou dnešního článku, a to s agentem. A proč je vlastně tak důležitý? Agent je robůtek, kterého můžete naprogramovat, tak aby dělal, co se vám zlíbí. To z něj dělá fantastický nástroj pro výuku, protože umožňuje studentům vidět, co přesně jejich program krok za krokem dělá. Rovněž jim pomáhá, si tak lépe představit, jak celý program funguje. Tento extrémně roztomilý společník se vždy objeví na stejné pozici jako hráč, a to po propojení Minecraftu s Code Conection.

Minecraft agent

Základy programování Agenta

Nyní, když už jsme s našim pomocníkem seznámili, bychom si mohli ukázat pár základních věcí, které náš Agent dokáže. Všechny příkazy týkající se Agenta můžete najít v záložce Agent. Kde jsou pak ještě rozřazeny do dalších podkategorií, ke kterým se v průběhu tohoto nebo dalšího dílu dostaneme.

Cvičení 1. – věrný společník

Objevíme se ve světe, zapnete Code Conection a hned tady máme první problém. Agent si vás vůbec nevšímá a jen stojí na místě, kde se objevil. A to rozhodně není dobře, svět Minecraftu je místo plné nástrah a my nechceme, aby se nám v něm tenhle roztomilý robůtek někde ztratil. Proto si vytvoříme jednoduchý program, díky kterému nás bude agent následovat. Využijme pro něj funkci „on player <action>“, kterou už jsme si přestavili minule.

Oproti prvnímu dílu do ní ale vložíme funkci ze záložky Agent. Přesněji funkci Agent teleport to player, který přesune agenta na vaší aktuální pozici.

Funguje to? Výborně! Tímto jsme základy úspěšně nechali za sebou. Teď se budeme muset naučit trochu víc teorie a potom si zkusíme s Agentem ukázat už něco trochu pokročilejšího.

Funkce If a loopy

Nyní se dostáváme k svatému grálů programování, a to k funkci if (když). Tato funkce umožňuje programu, aby provedl zadaný příkaz pouze pokud je splněna námi určená podmínka. Pokud není, tak se buďto nic nestane, nebo se, využijeme-li funkce else (jinak), spustí příkaz jiný.

Pak tu máme takzvané loopy neboli smyčky. Ty nám umožňují jednu část programu opakovat neustále dokola, nebo do splnění nějaké podmínky.

Cvičení 2. – běžec

A teď když už máte dostatečné znalosti, se můžeme vrhnout na trochu složitější program. Pokusíme se totiž naučit našeho robůtka, jak rozeznávat po čem jde a kdy má zastavit. První, co k tomu potřebujeme je, aby Agent chodil a neteleportoval se. K tomu využijeme příkaz „Agent move <direction> by <number> blocks”, který zajistí, aby se Agent posunul o námi zvolený počet bloků v námi zadaném směru.

Když tuto funkci spojíme se smyčkou „forever“, tak získáme robůtka, který se neustále pohybuje kupředu. To nám ale zdaleka nestačí. My potřebujeme, aby Agent věděl, kde začít a kde skončit svůj běh. Na to použijeme funkci „Agent inspect“, „=“ a určíme si blok, který chceme identifikovat. Pro nás třeba bude blok ruditu (redstone block) místo kde zastaví a blok smaragdu (emerald blok) místo kde začne. Za pomocí funkce „if“, pak můžeme vytvořit podmínku znějící: „pokud agent detekuje <určitý blok> pod sebou vykonej <akci>”.

Toto by nám stačilo pro začátek programu, ale co s jeho koncem? Zde budeme potřebovat ještě jeden typ smyčky a to „while <condition>“, která opakuje dokola funkce uvnitř ní, dokud platí námi zvolená podmínka. Dále budeme potřebovat logickou funkci „not“, která slouží k tomu, aby převrátila, kdy podmínka je a není pravda. S těmito dodatky už můžeme dokončit náš program, který bude vypadat asi takto.

Výzva

Bohužel se blížíme ke konci tohoto dílu, avšak předtím než se rozloučíme připravil jsem si pro vás zajímavou výzvu. Dnes jsme si řekli o spoustě velmi užitečných nástrojů, které využijeme při programování, ale naneštěstí jsme se neponořili moc do hloubky u žádného z nich, a proto vám dávám výzvu pro jejíž splnění vám budou stačit funkce, o kterých jsme si dnes pověděli, ale budete je muset použít trochu komplikovanějších situacích. Úkolem bude, naprogramovat agenta tak, že projde autonomně následující bludiště.

Pokud byste ale nemohli tento problém vyřešit, nebo byste si ho chtěli zkontrolovat, můžete na této stránce najít mé řešení: https://makecode.com/_VhjVFoJwofvw .

A s touto výzvou bych ukončil tento díl Programování v Minecraftu. Jak už jsem řekl, ani dnes jsme nedělali příliš komplikované věci, ale už k nim máme všechny potřebné nástroje a příště se obtížnost těchto programů výrazně zvýší. Do té doby zkuste vyřešit mou výzvu, anebo rovnou experimentujte s funkcemi, které jste se dnes naučili používat, protože bez cvičení se mistrem nikdo nestane.

Číst předchozí díl: Základy programování – 1. díl