Noční pták - Blog pro nespavce, zbloudilce, tuláky po hvězdách, černý ovce a ztracený existence

Hra Simon – projekt z freeCodeCoampu

Tahle věc byla prý na přelomu sedmdesátých a osmdesátých let velký hit. V nevirtuální formě vypadala jako obtloustlý frisbee rozdělený na čtyři barevné segmenty a doplněný čtyřmi menšími tlačítky. Jmenovala se Simon. Nejspíš to souviselo s hrou Šimon říká. Když jste Simona zapnuli a zmáčkli start, jeden ze segmentů blikl a zahrál tón. Vy jste měli za úkol segment znovu zmáčknout. Pokud se vám to povedlo, Simon zahrál zase stejný tón, a přidal další, společně s dalším rozsvíceným segmentem. Pokud jste je oba správně zopakovali, přidal Simon v dalším kole zase jeden tón navíc.

Každý segment měl svůj tón. Jejich pořadí vybírala hra náhodně. Když jste si dokázali zapamatovat řadu dvaceti tónů, vyhráli jste. Pokud jste se spletli, Simon vám řadu přehrál znovu. Pokud jste však na začátku hry zmáčkli tlačítko „strict,“ chybu vám neodpustil a museli jste začít zase od jednoho tónu.

Já si na Simona nepamatuji, ačkoliv jsem byl v osmdesátých letech už naživu. Možná byl populární jen na západě a za železnou oponu se nedostal. Před necelým rokem jsem ho dostal za úkol vytvořit v javaScriptu v rámci freeCodeCampu (Více o FCC v tomhle příspěvku). Jak se mi to povedlo můžete posoudit sami. Za sebe musím říct, že mě ta hra celkem baví. Připomíná mi hry na trénování pracovní paměti, o kterých jsem před časem psal do všelijakých časopisů.

Co se týká programování, nevzpomínám si, že bych s ní měl nějaké potíže. Jak se říká, kód, který jste napsali, a pak ho měsíc neviděli, je stejně nečitelný, jako kdyby ho napsal někdo jiný. JavaScriptová část má 380 řádků, což mi tehdy připadalo jako dlouhý, nebo aspoň delší program. HTML část je taky kratičká. Myslím, že jsem ji zvládnul daleko lépe než u Tetrisu, kde mi v zápalu boje poněkud přerostla.

Zvuky jsem vzal z různých otevřených zdrojů. Když jsem před stěhováním sem na blog zkoušel Simona, kterého jsem měl pověšeného na codePenu, zjistil jsem, že jeden tón nefunguje – můj skript odkazoval na mp3 soubor na nějaké cizí stránce. Její majitel soubor odstranil. Na blog jsem proto nahrál všech pět (čtyři tóny a jeden, který se ozve po zmáčknutí nesprávného segmentu) zvukových souborů, takže žádná taková porucha nehrozí. Enjoy!

Svobodnej národ: první kniha s Toničkou Bolavou

Přečetl jsem svoji první knihu s nejmladší zeměplošskou čarodějkou, Toničkou Bolavou. Celkem se mi líbila, i když asi bude víc pro děti než ostatní Zeměplochy. Příběh ve stručnosti: Toničce je devět let a chtěla by se stát čarodějkou. Myslí si totiž, že čarodějkou byla její babička, ačkoliv nelétala na koštěti a nenosila špičatý klobouk. Žije totiž v zemi jménem Křída, kde jsou čarodějky zakázané. Je to od té doby, co se záhadně ztratil syn zdejšího barona. Toniččina babička už je dlouho mrtvá, ale jedna čarodějka Křídou prochází. Jmenuje se Slečna Klíšťová.

Slečna Klíšťová si všimne, že Tonička je z toho správného čarodějnického těsta. Jenže zároveň se začnou dít podivné věci. Zjevují se všelijaké příšery. Vypadá to na invazi elfů z jednoho z těch otravných parazitních vesmírů. Královna elfů ukradne Toničce jejího malého bratříčka. Slečna Klíšťová se vydá hledat pomoc dalších čarodějek. Toničce nechá jen svou mluvící žábu. Jak asi tušíte, Tonička se do boje s královnou pustí na vlastní pěst.

Kromě žáby si vezme i železnou pánev. Taky jí pomáhají Nac Mac Fíglové – malí bojovní mužíčkové, s nimiž jsme se poprvé setkali ve třiadvacáté knize série, Carpe Jugulum. V českém překladu mluví nářečím, zřejmě odvozeném hlavně z brněnského hantecu. Luští se to dost špatně. V originálu používají skotský dialekt, který je paradoxně srozumitelnější i pro Čecha (samozřejmě pokud umí anglicky).

Svobodnej národ patří ke kratším Zeměplochám, jako třeba Lehké fantastično, Erik nebo Čaroprávnost. Příběh je jednodušší, je v něm méně postav. Je taky vážnější a méně komický. Obsahuje méně kulturních odkazů, velikonočních vajíček, a dalších podobných věcí. Přesto má něco do sebe. I když mám radši staré dobré čarodějky z Lancre, jsem zvědavý, jak se to s Toničkou dál vyvine. Jestli jsem nějakou knihu nepřehlédl, jsou Zeměplochy s Toničkou asi poslední, které jsem ještě nečetl. Těším se na ně.

Zemanátor, javaSriptová hříčka

V předminulém příspěvku jsem slíbil, že sem přidám několik svých dalších výtvorů v javaScriptu. Proti mému dosud nejlepšímu dílu, Tetrisu, jsou to vesměs hlouposti. Většinu z nich jsem napsal jako úkoly na freeCodeCampu. Dnešní kousek k ale k úkolům z FCC nepatří. Vyrobil jsem ho v loni na podzim a pořídil jsem mu vlastní doménu, tydensprezidentem.cz. Je to implementace slavného chatovacího robota ELIZA, kterého vymyslel v šedesátých letech Joseph Weizenbaum. Robot předstíral konverzaci. I když nerozuměl zprávám od uživatele, působil mnohdy důvěryhodně.

Vyhledával ve vstupech klíčová slova, která pak používal k formulování důvěryhodných reakcí. Dejme tomu, že jste ELIZe napsali „Myslím, že za oknem letí samice hrabáče.“ ELIZa našla ve vaší zprávě výraz „myslím si“ a vytvořila větu „Proč si myslíte, že za oknem letí samice hrabáče?“ Když uživatel nepoužil slovo ze seznamu, odpověděla nějakou všeobecnou frází jako „To je zajímavé, pokračujte prosím.“

V angličtině (např. zde) to působí lépe než v češtině, poněvadž anglická gramatika je méně zrádná než česká. V češtině vypadá transformovaná věta často nepřirozeně. Dá se to obejít, ale člověk se k tomu potřebuje vyznat v té gramatice, což není můj případ. Pěkná česká ELIZA je tady. Najdete tam i popis, jak byla vytvořena.

Nejznámější verze ELIZy předstírala, že je rogersovský psychoterapeut. Vznikly ale i další mutace. Třeba verze jménem PARRY simulovala paranoidního psychiatrického pacienta. Já jsem zkusil udělat ELIZu, která předstírá, že je Miloš Zeman. Když jsem hledal, jak ji naprogramovat, zjistil jsem, že je to tak jednoduché, že nemá smysl se namáhat. Použil jsem prefabrikovaný kód ze stránky Javascript Chatbot Workshop v kombinaci s citáty MZ, které jsem našel různě na webu. Jak to dopadlo, posuďte sami.

Vlajka pro Tibet

Málem bych letos zapomněl. Na výročí a svátky jsem nikdy nebyl, ale tenhle je můj nejoblíbenější. Takže: je desátého března, tady je vlajka. Svobodu Tibetu!

Vlajka pro Tibet

Koukejte na můj Tetris!

Jestli máte rádi posouvání a otáčení barevných kostiček, zkuste si zahrát můj Tetris v javaScriptu. Nezapomeňte si vyzkoušet různá nastavení. Hra není dokonalá, ale i tak z ní mám radost. Když mě poprvé napadlo, že bych si mohl vytvořit svojí vlastní verzi Tetrisu, začal jsem hledat návody, jak to udělat. Narazil jsem ale na jeden, kde se psalo, že ještě větší výzva je návod nečíst, a napsat program bez něj. Udělal jsem to. Byla to zábava, i když s návodem by hra asi dopadla lépe. Funguje celkem dobře, o tom žádná. Kód by ale mohl být elegantnější. Za všeho nejméně se mi povedla čtvercová síť.

Původně jsem chtěl udělat každý čtvereček z jednoho tagu <div>. Jenže pak jsem zjistil, že aby čtverečky zůstaly čtvercové i při změně rozměrů stránky, musí být každý udělaný ze tří divů vložených do sebe. Standardní hrací plocha Tetrisu má deset krát dvacet čtverečků. Nad ní ale jsou ještě čtyři řádky, které hráč nevidí.

Říkal jsem si taky, že místo pevně definovaných souřadnic bude jednodušší, když budou kostky jen tak plavat v prostoru. Po nárazu do stěny se zastaví. Takže jsem přidal ještě dva sloupce neviditelných čtverečků po stranách jako stěny. Potom jsem zjistil, že potřebuju na spodní straně hracího pole čtyři další neviditelné řádky. Nakonec jsem udělal ještě jednu malou čtvercovou sít, v níž se zobrazuje kostka, která spadne příště.

Zkrátka divů je na stránce hodně. Mobilní verze by taky mohla být hratelnější. Snažil jsem se udělat dotyková tlačítka, která budou reagovat jako šipky na klávesnici. Moc se mi to ale nepovedlo. Možná hru ještě vylepším. Když už jsem si Tetris naprogramoval, napsal jsem o něm i článek do 100+1. Má hodně zajímavou historii. Nevím ale, kdy článek vyjde.

Možná by vás zajímalo, kde jsem se naučil javaScritpt. (Nebo taky ne, trochu programovat už asi dneska umí každý.) Nuže, bylo to na freeCodeCampu. Když se tam přihlásíte, začínáte s učením od jednoduchého HTML. Plníte úkoly. Ze začátku jsou primovní, jako třeba změnit barvu textu. Postupně přejdete k algoritmům v javaScriptu. Některé jsou pořádně těžké. Vždycky čas od času máte za úkol něco vybudovat. Napřed je to jednoduchá HTML stránka, pak třeba javaScriptová kalkulačka, a tak dál.

Za plnění úkolů dostáváte certifikáty. Já jsem někdy na jaře nebo v létě došel k prvnímu z nich, front end, certifikátu. Následuje druhý. Zatím u něj ale nejsou úkoly. Je tam jen „Comming soon.“ Tak jsem toho zase nechal. Vloni na podzim mi to ale nedalo a začal jsem si jen tak pro zábavu znovu programovat. Chci sem dát víc svých výtvorů, i když Tetris už asi nepřekonám. Většinou jsou to úkoly z freeCodeCampu a mám je už pověšené na codePenu. Tady mi to ale přece jen připadá víc jako doma. Udělal jsem zvláštní stránku, kde bude v budoucnu rozcestník.