Kvíz

V tomto návodu si ukážeme, jak v Minecraftu postavit jednoduchou kvízovou hru. V takové hře dáme hráčům za úkol projít mapu, na které se setkají s různými otázkami. Pokud odpoví špatně, vrátí se na začátek.

Co už bys měl/a umět

Mapa

Jako většina miniher, i u kvízu potřebujeme nejprve postavit mapu – místo, kde se bude hrát. Takovou mapou by mohla být uzavřená místnost s několika dírami pro procházení. Můžeš ji postavit třeba takhle:

Máme před sebou tři průchody – Tohle budou “odpovědi” v tvém kvízu

Otázky

Nyní potřebujeme napsat otázku. Nejjednodušší způsob, jak otázku napsat, je pomocí obyčené cedulky. Vezmi si v inventáři ceduli a polož ji třeba na zem. Do ní pak napiš otázku.

Otázka teď stojí před třema průchody.

Pokud chceš změnit barvu cedulky, můžeš si vzít z inventáře barvivo. V inventáři jich najdeš celkem 16, a můžeš je v inventáři vyhledat pod názvem barvivo (v angličtině dye). Pokud máš nejnovější verzi Minecraftu, můžeš také použít Váček světélkujícího inkoustu (anglicky Glow ink sac), se kterým můžeš text na cedulce zvýraznit. Pak bude vidět i ve tmě.

Příklad zvýrazněné cedulky

Odpovědi

Teď musíme napsat odpovědi. Přidej do své mapy cedulky s odpověďmi, nejlépe nad průchody. Hráč si poté bude muset vybrat průchod se správnou odpovědí. Třeba takhle:

Teď společně naprogramujeme kvíz tak, aby na špatné odpovědi poslal hráče na začátek, a na správné hráči dovolil jít dál. Použijeme k tomu jednoduchý Command block a nášlapnou desku, která CB spustí, když na ni stoupne hráč.

Vykopej si pod jednou ze špatných odpovědí otvor, a polož do něj Command block. Tady naprogramujeme teleportovací příkaz. Zjisti si souřadnice před první otázkou a vytvoř příkaz /teleport:

Command block s příkazem

Bylo by určitě nudné, kdybys musel/a s každou špatnou odpovědí psát tento příkaz. Proto je lepší, když si ho uložíš do inventáře. Podrž na klávesnici tlačítko Ctrl, a pomocí kolečka myši klikni na command block. Dostaneš do inventáře jeho kopii, kterou můžeš položit i s napsaným příkazem. Pokud na něj najedeš v inventáři myší, bude na sobě mít text (+NBT). To znamená, že má uložená nějaká data navíc.

Svůj zkopírovaný command block pro špatné odpovědi polož pod všechny průchody, u kterých je špatná odpověď. A co ta správná? Ukážeme si, jak napsat někomu do inventáře zprávu, pokud stoupne na správnou odpověď. Polož si pod správnou odpověď prázdný Command block, a napiš příkaz /tellraw:

/tellraw @p “Správně!”

Pokud takový příkaz spustíme, nejbližšímu hráči do chatu přijde zpráva. Příkaz si můžeš zkopírovat jako ten předchozí, a používat ho v dalších otázkách. Nebo, pokud chceš, můžeš ke každé otázce napsat jinou zprávu, třeba vysvětlení, proč je správně.

Přidej nad command blocky nějaký blok, a nad něj polož nášlapnou desku. První kvízová otázka je hotová!

Samozřejmě, ve svém kvízu můžeš mít víc otázek. Můžeš postavit víc otázek a Command blocky jen překopírovat. Nemusíš všechny psát odznova. Můžeš mít i víc správných odpovědí.

Konec kvízu

Až budeš mít dost otázek, bude na čase postavit konec. Každá minihra někde končí, a i ta tvoje by měla mít nějaký konec. Postav na konci kvízu nějaký pěkný pokoj, a nezapomeň na tlačítko pro návrat na začátek (nebo nějakou hlavní mapu – lobby).

Výzvy na závěr

Zkus do svého kvízu přidat tohle:

  • Dokážeš do svého kvízu přidat záchytné body (checkpointy)?
  • Dokážeš napsat text “Správně” na celou obrazovku místo do chatu?
  • Dokážeš zneviditelnit ostatní hráče, aby nikdo nevěděl, které odpovědi jsou správně?

Jak spočítat, kolik máš ve své minihře hráčů

V tomto návodu si ukážeme, jak ve své Minecraft minihře můžeš spočítat, kolik hráčů se nachází na tvé mapě.

Představ si to takhle: Máš postavenou mapu na svoji hru, například Spleef, TNT run, nebo nějakou jinou. V těchto hrách se hraje o to, kdo je poslední naživu. Jak ale můžeš zjistit, kolik je na tvé mapě hráčů? Přesně to si teď vysvětlíme.

Co už bys měl/a umět

  • Pracovat se scoreboardy (počítadly)
  • Rozumět selektorům v Minecraftu (@a, @e, @p) – návod zde
  • Pracovat s příkazem /execute – návod zde

Vytváříme počítadlo

Nejprve musíme vytvořit scoreboard (počítadlo). Scoreboardy nám v Minecraftu umožňují vytvořit tabulku, kde má každý hráč nějaké číslo (skóre). Toto skóre potom můžeme zobrazovat třeba na pravé straně obrazovky, nebo v Tab listu (seznam připojených hráčů, který můžeš otevřít stisknutím klávesy Tab).

Scoreboardy můžou být navázané na nějakou informaci v Minecraftu; můžou automaticky počítat, kolikrát hráč zemřel, kolikrát byl vytěžen nějaký předmět, kolik zombie hráč zabil a mnoho dalších. Scoreboardy jde ale také nastavit, aby nebyly spojené na nějaké informace; v takovém případě si můžeš body v scoreboardu přidělovat sám. Můžeš třeba s jednoduchým commandem počítat, kolikrát nějaký hráč stiskl tlačítko.

/scoreboard objectives add <nazev_pocitadla> dummy

Tento příkaz vytvoří nové počítadlo. Název počítadla si můžeš vymyslet, ale nesmí v něm být mezery, ani české háčky a čárky. Pod tímto jménem budeš scoreboard označovat v ostatních příkazech.

/scoreboard objectives add HraciNaMape dummy

Tímto jsme vytvořili nové počítadlo HraciNaMape. Můžeš ho zviditelnit napsáním tohoto příkazu:

/scoreboard objectives setdisplay HraciNaMape sidebar

Zatím se nic nestalo, protože počítadlo HraciNaMape nemá žádné záznamy. Před chvíli jsme ho vytvořili, a proto je prázdné. Teď si ukážeme, k čemu nám bude užitečné.

Počítání hráčů

Položili jsme dva command blocky, jeden repeatový, a jeden chainový. Do fialového chain command blocku napíšeme tento příkaz:

/execute store result score Hraci HraciNaMape if entity @a[distance=..20]

Pojďme si ho vysvětlit trochu podrobněji.

  • /execute začíná příkaz execute.
  • store result score nastaví /execute tak, aby výsledek uložil do nějakého počítadla.
  • Hraci je jméno hráče, pod jehož jménem se skóre uloží. Můžeš si vymyslet jiné.
    • Ale proč? HraciNaMape je pouze počítadlo, počítadlo žádnou hodnotu samo o sobě nemá. Hodnoty mají Hráči, kterým jsou body na počítadle ukládány.
    • Hráč Steve by mohl mít 1 bod, hráč Alex by mohl mít 2 body, hráč Honzik by mohl mít 3 body. Ale na jiném počítadle by mohl mít Steve 4 body, Alex 3 body, a Honzik 2 body.
    • Můžeš si to představit jako sporty, v jednom sportu (jednom scoreboardu) mají hráči nějaké body, ale v jiném sportu (jiném scoreboardu) můžou mít body jiné.
    • Hráč, kterému body přidáváš, nemusí být připojený na Minecraft server. Vlastně ani nemusí existovat. V tomto příkazu používáme smyšleného hráče, a nastavujeme mu body ve scoreboardu, abychom něco vypočítali. Chytré, že?
  • HraciNaMape je počítadlo, do kterého ukládáme body.
  • if entity @a[distance=..20] spustí příkaz pouze na hráčích, kteří jsou 20 bloků nebo blíž od command blocku, kde máš příkaz napsaný.
    • Pokud napíšeš do chatu /execute if entity @a, do chatu nejspíš dostaneš zprávu “Test passed, count: Číslo“. if entity v příkazu /execute spočítalo, kolik hráčů příkaz našel. [distance=..20] omezuje vyhledávání jen na určitou oblast.

Dokončili jsme první příkaz, který jsme napsali do repeat command blocku. Pokud máš správně nastavený scoreboard, hlavně příkaz /scoreboard objectives setdisplay, okamžitě uvidíš změnu. Setdisplay Minecraftu přikázalo, aby se po pravé straně zobrazovalo počítadlo. Náš smyšlený hráč na něm bude mít skóre, které představuje počet hráčů. To protože repeatový command block neustále počítá hráče okolo a výsledek ukládá.

Napíšeme druhý command, do zeleného chain command blocku. Ten bude:

/execute if score Hraci HraciNaMape matches 1

Tento příkaz zkontroluje, pokud hráč “Hraci” má ve scoreboardu “HraciNaMape” přesně 1 bod. Pokud ano, příkaz bude úspěšný.

A to je vše, tímto jsme zkontrolovali, jestli je na tvé minihře jen jeden hráč.

Co dál?

Jaké příkazy spustit, když je ve tvé minihře jen jeden hráč, je na tobě. Můžeš vítězi předat odměnu, teleportovat ho pryč, nebo napsat do chatu oznámení. Ale jak na to?

V kapitole nahoře jsme zmínili, že pokud bude skóre přesně 1, bude příkaz úspěšný. Toho můžeme využít. Polož si do řady command blocků další command block. Nastav ho jako chainový, a conditional. Conditional a unconditional můžeš přepínat prostředním tlačítkem.

Šipka na conditional command blocku bude zalomená, jako je to vidět tady

Příkazy v conditional command blocku se spustí jen, když příkaz před ním skončí úspěšně. Náš počítací příkaz:

/execute if score Hraci HraciNaMape matches 1

…skončí úspěšně když má hráč “Hraci” ve scoreboardu “HraciNaMape” jeden bod. Pokud má více, nebo méně, skončí neúspěšně. Příkazy v conditional command blocku by se tedy nespustily.

Co do tohoto command blocku napíšeš je už jen na tobě. Ale zapojení přes conditional command block ti ušetří práci. Nebudeš muset do každého command blocku v řadě přidávat podmínku, jestli je skóre rovné 1. To protože máš v řadě už jeden příkaz, který to dělá za tebe, a zbytek je na něj navázaný.