Hra lahev
Úvod
Proč hrát Lahev s lahví, když vám stačí chytrá krabička? Nastavte si Sadu Start tak, aby náhodně vybrala člena skupiny – ať už na párty, při losování výherce nebo když se rozhoduje, kdo uklidí.
V tomto projektu se naučíš, jak nastavit krabičku tak, aby náhodně vybrala člena tvé skupiny. 😱
Budeš potřebovat krabičku s tlačítkem a USB dongle. Stačí ti základní sada od HARDWARIO, tedy Sada Start.
Spusť to v Node-RED
- Sestav Start Set a spáruj ho.
- V Playgroundu klikni na záložku Functions, kde se nachází programovací plocha.
- Pojďme to rozjet. 🤞 Umísti na plochu MQTT uzel ze sekce Input.
Dvojklikem otevři uzel a nastav klíčovou funkci – stisknutí tlačítka.
Zkopíruj následující řádek do pole Topic:
node/x-axis-detector:0/accelerometer/-/event-count
Potvrď to tlačítkem Done.
Nastav náhodnou volbu
- Náhodnou volbu můžeš naprogramovat pomocí jednoduchého JavaScriptu. Ale neboj, pomůžeme ti. Nejprve umísti vedle MQTT uzlu Function uzel ze sekce Function.
- Dvojklikem otevři uzel. Do řádku Name zadej název uzlu (např. Náhodná volba). Do pole Function zkopíruj tento kód přesně tak, jak je uveden na obrázku. Tento kód zajistí, že bude náhodně vybrán jeden z účastníků.
var rand = Math.round( Math.random() * (flow.get("numberOfContestants") - 1));
msg.payload = flow.get("contestantArr")[rand];
return msg;
Potvrď to tlačítkem Done.
- Přidej vedle uzlu Náhodná volba ještě jeden uzel – Delay (najdeš ho také v sekci Function). Díky tomuto uzlu se odpověď trochu zpozdí a vytvoří se napínavá atmosféra. Baf! 😲
- Uvnitř uzlu nastav, aby bylo zpoždění náhodné – klikni na random delay a zvol čas v rozmezí 2 až 4 sekundy. To bude tak akorát na udržení napětí ve vzduchu.
Potvrď to tlačítkem Done.
- Nad všechny tyto uzly umísti uzel, který nastaví zprávu zobrazující se při výběru. Použij k tomu uzel Change ze stejné sekce.
- Otevři uzel dvojklikem a napiš svou zprávu – například: Probíhá výběr…
Nastav účastníky
- Tvoje loterie se neobejde bez tlačítka pro resetování tabulky – díky němu můžeš pokračovat ve hře. Pod uzel MQTT umísti Button node, tentokrát ze sekce Dashboard.
- Dvojklikem otevři uzel a do řádku Label napiš název Reset.
Potvrď to tlačítkem Done.
- Pokračujeme dál! Teď nastav všechny kámoše, kteří se budou hry účastnit – zatím anonymně. Přidej je na plochu pomocí uzlu Text input ze sekce Dashboard. Přidej tolik uzlů, kolik vás je.
- V každém uzlu proveď následující nastavení:
- Do pole Label napiš Účastník 1, Účastník 2, atd. podle počtu hráčů.
- Do pole Delay zadej hodnotu 0.
- Odškrtni políčko hned pod ním – tím zajistíš, že se pole skutečně vymažou po stisknutí resetu.
Opakuj tohle nastavení pro každý uzel s účastníkem.
Potvrď to tlačítkem Done.
- Umísti další JavaScriptový kód vedle účastníků. Tento kód přiřadí jména účastníků na odpovídající místa. Opět jej vlož jako uzel typu Function.
- Dvojitým kliknutím na uzel otevři jeho nastavení. Do řádku Label napiš název uzlu a do pole Function zkopíruj tento kód:
var contestants = flow.get("numberOfContestants") || 0;
var contestantArray = flow.get("contestantArr") || [msg.payload];
contestants++;
flow.set("numberOfContestants", contestants);
if(contestants != 1)
{
contestantArray.push(msg.payload);
}
flow.set("contestantArr", contestantArray);
Ujisti se, že výstup je skutečně jen jeden. ❗
Potvrď kliknutím na tlačítko Done.
- Neboj se, už jsme skoro u konce. 🙌 Umísti na plochu uzel Change. Ten zajistí, že se při resetování vše vrátí do původního stavu. 🖖
- V nastavení tohoto uzlu vyplň dvě Pravidla tak, jak je vidět na obrázku. První bude Delete | flow | ContestantArr. Pro přidání dalšího pravidla klikni na malé tlačítko + Add pod polem. V tomto druhém pravidle nastav Delete | flow | numberOfContestants.
Potvrď kliknutím na tlačítko Done.
Pouze jeden může být vybrán.
- Umístěte na plochu poslední uzel. Ten oznámí, kdo byl vybrán. 🙏 Najdete ho jednoduše jako uzel Text v sekci Dashboard.
- V řádku Label uvnitř uzlu nastavte, jak bude zpráva vypadat při náhodném výběru jednoho účastníka.
Potvrď kliknutím na tlačítko Done.
- A poté všechno krásně propojte. V horní části spojte všechny uzly, které zajišťují losování, ve spodní části spojte ty, které tvoří losovací tabulku.
- Nezapomeňte kliknout na tlačítko Deploy v pravém horním rohu! 🚨
Ať zábava začne!
- A teď hurá do akce! V záložce Dashboard zadej jména všech účastníků. Pokud jsi v uzlech pro jednotlivé účastníky nenastavil automatické obnovení, nezapomeň po každém jménu stisknout klávesu Enter. 👈
- Koho si osud vybral? A za co? To už je jen na tobě. 😈
Můžeš například:
- vylosovat, kdo komu dá pusu (woohoo),
- vytáhnout nejkratší sirku pro toho, kdo vynáší odpadky,
- určit výherce soutěže,
- přidělit bláznivé úkoly vybrané náhodně,
- a cokoliv dalšího, co tě napadne!