Když jsem zjistil, že plná verze Light Bota se od dema liší v tom, že zahrnuje „overloading“, podmínky a cykly, zaradoval jsem se, že konečně uvidím nějakou jednoduchou programátorskou hru / výukovou aplikaci, která bude vhodná pro začátečníky. No… Mno… je to o něco lepší, než Robologic, ale ne o mnoho.
Podmínky, „cykly“ a „overloading“ sice ve hře jsou, ale znamenají něco jiného, než byste si asi představovali. Tak za prvé, pojem „overloading“ znamená, že když použijete funkci „změnit stav svítícího políčka“ na něco jiného, stane se… něco jiného. Kdyby se ta funkce jmenovala „Akce“, tak by to perfektně popisovalo, co ve skutečnosti dělá: Spustí výtah, přebarví robota a tak podobně.
Problém je jednak v tom, že jedna funkce může vést k velmi různorodým výsledkům, a potom v tom, že předem nevíte, co se přesně stane. Například výtah může mít tři pozice a cykluje mezi nimi. Takže se stává, že napíšete program, pošlete robota k výtahu a až experimentálně zjistíte, jestli pojede nahoru a nebo dolů.
Dosti zásadně se mi nelíbí to, že se tu pod pojmem „cyklus“ označuje rekurze. Rekurze není cyklus. Věci typu „vykonej 4x krok a akce“ se tu udělat nedají. S trochou snahy ale můžete udělat rekurzivní podprogram, který z něhož vyskočíte při splnění podmínky, jenomže podmínky jsou tu svázány jen s určitými políčky. Takže zase víceméně smolík, jediný opravdu efektivní „cyklus“ je nekonečná rekurze v rámci jedné procedury.
Á propos: Podmínky. Tak s těmi je velká legrace. Když robot dojde na políčko s určitou barvou A ZÁROVEŇ „provede akci“, tak se přebarví. Když je přebarvený, vykonává normální instrukce, ale navíc také instrukce s tou barvou, na kterou je zrovna natřený. Jinak tyto barevné instrukce ignoruje. Změna barvy robota je trvalá, jeho barvu na neutrální si musíte manuálně zrušit na konci bloku podmíněných instrukcí tak, že na tom barevném políčku provedete „akci“ podruhé. Pokud to neuděláte, budete pobíhat po mapě zmalovaní a podle toho jednat. Používání podmínek je tedy dost komplikované.
Komplikované je rovněž používání funkce RETURN, tedy skok z rekurzivní smyčky. Je myslím celkem zjevné, že tuto funkci má smysl používat pouze v kombinaci s podmínkami, jinak nedává smysl. Tohle ale není moc začátečnický materiál.
Velmi specifickým problémem hry je řazení úkolů. Je jich celkem 20, přičemž je musíte procházet jeden po druhém a hra vám dá vždy natvrdo najevo, jak přesně máte úkol vyřešit. Klidně dělá takové věci, že když dojde na výuku rekurze, nabídne vám hlavní programovou paměť o velikosti 1 krok, abyste si do toho mohli vložit odkaz na proceduru P1. Pohled na hlavní program, obsahující jedinou instrukci, mi kapku trhá vnitřnosti.
Mimochodem, rekurzivně lze volat jenom procedury P1 a P2, hlavní program sám sebe volat nemůže. Je asi jasné, že s takto tristním instrukčním setem moc kouzel nenaděláte. Hra se pokouší v některých místech naznačovat, že procedury jsou tu proto, abyste „našli vzorce pro opakované činnosti“, ale klidně to sestřelí levelem, ve kterém žádné pravidelnosti nejsou. Abyste ho vyřešili, musíte použít celkem nechutný hack, kdy napíšete sekvenci instrukcí, která začíná v hlavní paměti, když vám dojde místo, tak skočíte do procedury P1 a až vám dojde místo i tam, tak do procedury P2.
To je zkrátka pěkná prasárna. Ano, vybavuji si, že se na osmibitech takto prasilo celkem pravidelně, ale to bylo proto, že to jinak nešlo. Zde je limit na instrukce umělý – a když už si hra hraje „na málo paměti“, tak by z čistě didaktických důvodů v tomto případě mohla nabídnout „hodně paměti“.
Nemám nic proti kompaktnímu a třeba i těžko čitelnému kódu, pokud je chytrý. Takovým příkladem je například Cargo Bot, ten vyloženě vyzývá k tvorbě co nejkratšího kódu. Nicméně u začátečníků považuji za důležité začít přehledným, čitelným, snadno pochopitelným a elegantním kódem. Design Light Bota, podobně jako u Robologic, něco takového vylučuje. Ani se nestačíte leknout a už píšete pěkné prasárny, o nějakém členění kódu ani nemluvě. Těžko říct, zda se dá Light Bot nějak opravit tak, aby byl pro začátečníky vhodnější. Mám o tom velmi vážné pochybnosti.
Daleko větší problém je v tom, že i když Light Bot působí hravě a je po grafické, designové a hudební stránce mnohem dále než Robologic, ve skutečnosti v něm nemáte žádnou volbu. Není hravý. Nelze v něm experimentovat, nelze v něm tvořit vlastní levely, nelze si v něm hrát. Máte 20 puzzlů, které musíte vyřešit jeden za druhým a to způsobem, který po vás autor žádá. Není tu ani možnost, že byste si po vyřešení úkolu mohli zkoušet ten úkol vyřešit jinak. Ani „challenge“ levely vám nedovolují využívat všechny instrukce – prostě proto, že aby bylo možné vůbec používat podmínky, musí vám designér dát do levelu barvící políčka. Bez nich podmínky prostě nefungují.
Nakonec je proto hraní celkem otravné. Škoda. Už jenom větší otevřenost by hře velice pomohla. Ve finále tak máme „jen“ logickou hru, která není pro začátečníky vhodná (protože vás učí kódovat jako čuně) a pro pokročilé je moc lehká. Hrát se to dá, ale mám velmi silný pocit nerealizovaného potenciálu. Pocit, že stačilo pár změn a mohlo to být mnohem lepší.
Hodnocení: 6/10
Verdikt:
Vizuálně hezky udělaná programátorská hříčka, která vás učí hrozné zlozvyky.
Co se mi líbilo:
- Má alespoň určitou formu podmínek
- Graficky a zvukově velmi dobrá
Co se mi nelíbilo:
- Ve skutečnosti není o moc dále než Robologic
- Učí vás to hacky a prasárny
- Didakticky nevhodné pro začátečníky
- Musíte projít tutorial a „challenge“ úrovně jednu po druhé, nelze přeskakovat
Cena aplikace je 1,79 Euro.
Aplikace se dá stáhnout tady
Demoverze se dá stáhnout odsud
[dmalbum path=“/wp-content/uploads/dm-albums/Light Bot/“/]
Web výrobce je zde