Základy programování v Minecraftu – 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.

Kdo je Agent?

Než se ale pustíte 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ý při programování v Minecraftu? 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í Minecraft: Education Edition s Code Conection.

Agent ze hry Minecrfat Education Edition
Minecraft agent

Základy programování Agenta

Nyní, když už jste s vašim pomocníkem seznámili, bychom si mohli ukázat pár základních věcí, které váš 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.

Tlačítko záložky Agent
Záložka Agent

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

Objevíte se ve světe, zapnete Code Conection a hned tady máte 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říte jednoduchý program, díky kterému vás bude agent následovat. Využijme pro něj funkci on player <action>, kterou už jsme si přestavili minule.

Blok kódu ze hry Minecraft Education Edition s příkazem "on player walk"
Blok kódu

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

Blok kódu ze hry Minecraft Education Edition s příkazem "on player walk agent teleport to player"
Blok kódu

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

Funkce If a loopy v podání Minecraftu

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ý.

Blok kódu ze hry Minecraft Education Edition s funkcí "if"
Blok kódu

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

Blok kódu ze hry Minecraft Education Edition se smyčkou.
Blok kódu

Cvičení 2. – běžec

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

Blok kódu ze hry Minecraft Education Edition s příkazem "agent move forward by 1"
Blok kódu

Když tuto funkci spojíte se smyčkou forever, získáme robůtka, který se neustále pohybuje kupředu. To vám ale zdaleka nestačí. Vy potřebujeme, aby Agent věděl kde začít a kde skončit svůj běh. Na to použijete funkci Agent inspect down = a určíte si blok, který chcete identifikovat. Pro vá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>”.

Blok kódu ze hry Minecraft Education Edition s příkazem "if agent inspect block down = emerald block then".
Blok kódu

Toto by nám stačilo pro začátek programu, ale co s jeho koncem? Zde budete potřebovat ještě jeden typ smyčky, a to while <condition>, která opakuje dokola funkce uvnitř ní, dokud platí vámi zvolená podmínka. Dále budete 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ůžete dokončit váš program, který bude vypadat asi takto.

Blok kódu ze hry Minecraft Education Edition s příkazem "forever: if agent inspect block down = emerald block then: while not agent inspect block down = redstone block, do agent move forward by 1".
Blok kódu

Výzva

Bohužel se blížíme ke konci tohoto dílu programování v Minecraftu, avšak předtím, než se rozloučíme, jsem si pro vás připravil zajímavou výzvu. Dnes jsme si řekli o spoustě velmi užitečných nástrojů, které využijete 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 v trochu komplikovanějších situacích. Úkolem bude naprogramovat agenta tak, aby prošel autonomně následující bludiště.

Bludiště postavené v Minecraftu jako výzva k naprogramování Agenta.
Bludiště pro Agenta

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í.

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 nyní k nim již máte všechny potřebné nástroje.

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. Vyzkoušejte si třeba programovací Minecraft mapu Nesnáze v zahradě.

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