neděle 12. března 2017

Bonus 1: Programovací jazyk Karel


Programovací jazyk Karel

Občas si dovolím trochu odbočit od her a vypíchnout i některá další zajímavá témata v hodně nárazových bonusových článcích. Naprosto ideální kandidát je právě "Karel", což je programovací jazyk určený pro úplné začátečníky, jenž se používá dodnes. Vymyslel ho Richard E. Pattis, který ho používal při výuce základů algoritmizace na Stanfordské univerzitě a pojmenoval ho po našem Karlu Čapkovi.

Richard E. Pattis

V Československu byl tento jazyk obrovsky populární, což dokazují porty na většinu dostupných platforem. Máme tu verzi pro ZX Spectrum (1985) od Jana Rupperta, ze které je úvodní obrázek (ten maloval Franta Fuka). Od Tomáše Bartovského máme verze pro počítače Ondra a ZX-81 (1985). Nejvíce verzí však vzniklo pro počítač PMD 85, což dává smysl, protože ten se vyskytoval téměř výhradně ve školách. Svoje verze vytvořili Tomáš Bartovský, Marián Vittek a Karel Šuhajda.

Úvodní obrazovka, verze pro Spectrum
Karel je vlevo dole a chystá se vydat do bludiště a najít značku (nahoře).
Vlevo je výpis příkazu "najdi" s rekurzí.

V programu ovládáme robota a zadáváme mu příkazy, které pak plní. Problém je, že zná jen naprosté základy a zbytek si musíme naprogramovat sami. Karel se pohybuje po šachovnicovém poli, kterému se zde říká "město". Na začátku můžeme město upravit a přidat zdi (vytvořit bludiště) a značky (předměty, které Karel může zvedat a pokládat).

V základu jsou pouze tyto příkazy:
  • krok (= jdi na pole před tebou)
  • vlevo-vbok (= otoč se o 90°)
  • polož (= polož značku)
  • zvedni (= zvedni značku)
  • stop (= ukonči vykonávání příkazu)

Samozřejmě umí většinou i vyhodnocovat podmínky (když, dokud) a cykly (opakuj x krát). Typicky první úlohou je naučit se, jak robota přimět, aby se otočil doprava, když na to nemáme příkaz. Ten si musíme sami vytvořit tím, že zadáme 3x vlevo-vbok a je hotovo. Zdá se to jako jednoduchá věc, ale samozřejmě pro děti jsou tyto základy algoritmizace klíčové, ostatně budu citovat svého kamaráda Crashe, který vzpomínal na svůj první kontakt s Karlem:

"Pamatuju si právě tu první hodinu, kdy učitel začal tím, že Karel umí jen "vlevo v bok", tak jakpak ho naučíme "vpravo v bok"? Čuměl jsem na něj jak idiot a říkal si, že ho to naučíme asi těžko, když je tak blbej. Načež nám byl samozřejmě nenásilnou formou vysvětlen cyklus s pevným počtem opakování tedy "opakuj 3x vlevo v bok" a bylo vymalováno. Byla to naprosto primitivní věc, ale tehdy to prozření a pochopení algoritmu na mě mělo dost zásadní vliv a i mnohem později, když jsem se někde ve svých programovacích pokusech zasekl a měl pocit, že to prostě nejde, tak jsem si vždycky vzpomněl, že Karel taky vpravo v bok neuměl, a že to určitě nějaké řešení mít bude."
Na internetu se stále dají najít příklady a můžete si tak rychle vyzkoušet některé pokročilejší věci. Já si zkusil třeba automatické vytvoření šachovnice či "postavení domu".

Karel sám položil šachovnici a vrátil se vlevo dolů na výchozí políčko
Nevypadá to nic moc, ale skrývá se za tím velké množství kódu !

Robot Karel se objevuje jako postava i v některých hrách - například jako nepřítel mě hodně potrápil v Itemiadě (1985) a dokonce si za něj můžeme zahrát ve hře Robot Karel na Atari (1989). Verze od Mariána Vitteka je dokonce v pseudo 3D grafice.

3D verze pro PMD 85 od M. Vitteka
Verze pro PMD 85 od K. Šuhajdy
Verze pro ZX81 od T. Bartovského

Pochopitelně je ovšem v dnešní době už neskutečně nepohodlné a zdlouhavé tohle "vývojové prostředí" používat. Než napíšete nějaký složitější příkaz, trvá to strašně dlouho, stejně tak prohlížení již napsaného kódu. Na internetu se ovšem dají najít i verze určené pro prohlížeč, jež jsou o něco příjemnější. Stále jsou to ovšem v porovnání s moderními IDE galeje. Pokud se chcete naučit programovat, stáhněte si raději Python ;)

Hra 13: Horác a Pavouci (1985)


Horác a Pavouci
Vývojář: Karej Šuhajda
Vydavatel: 4004/482 ZO Svazarmu
Vydáno 1985 pro PMD 85
Žánr: Arkáda
Počet hráčů: 1
Stav: Dokončeno

Pod značkou "4004/482 ZO Svazarmu" (Svazarm = Svaz pro spolupráci s armádou) se skrývá skupina vývojářů z Prahy, konkrétně z "Klubu digitální a měřící techniky" na Kavčích horách, která v 80. letech na již zmiňované PMDčko vydala hned několik her. Nejaktivnějším z této skupiny byl právě Karel Šuhajda, jenž často na hrách spolupracoval s dalšími vývojáři, "Horáce" ovšem vytvořil sám.

Jako většina tehdejších her, i Horác vychází ze zahraničního vzoru, tentokráte jím je "Horace and the Spiders" (1983) ze Spectra. Vidíte ten luxus na úvodním obrázku? Vypsání ovládání mě vždy potěší, zvlášť pokud je to taková šílená kombinace, na kterou bych hned nepřišel. E, I, P, Y, N? Vážně? Popravdě největší překážkou v dohrání hry bylo nezlámat si při tom prsty.

Horace and the Spiders ze Spectra
Horác a Pavouci na PMD 85

Jak hra upozorňuje, úkolem je "rozdupat všechny pavouky v pavučině". To se lehko řekne, ale zpočátku jsem vůbec netušil, jak na to. Nepříjemné je, že vaše postava se neustále pohybuje a nejde zastavit, což spolu s hodně krkolomným ovládáním přidává na obtížnosti. Pavouků je na začátku 7, každý v jedné řadě. Úroveň je jen jedna a je pokaždé vygenerovaná náhodně. Stejně tak pohyb pavouků je náhodný. Občas se tak můžete dostat do situace, kdy nemáte hned od začátku šanci uniknout a pavouk vás dostane po pár vteřinách.

Zrovna zadupávám chyceného pavouka do země. Napravo je další "díra-past".

Po chvíli bádání, kdy jsem nemohl přijít na to, jak pavouka zabít, jsem zjistil, že je nejdřív nutné rozdupat podlahu (pavučinu), čímž se vytvoří jakási past. Následně musíte doufat, že pavouk zrovna půjde tou cestou a do díry spadne. Pak je nutné přiběhnout a chvíli na něm ještě skákat, čímž ho zadupete do pavučiny a konečně se ho zbavíte. Mezitím vás samozřejmě můžou sežrat ostatní pavouci. Faktor náhody je tu velký.

Vítězný screen - zrovna jsem zadupal posledního pavouka

Moje taktika byla jednoduchá - prostě jsem zůstal v dolních dvou patrech a vyřizoval jednoho po druhém tak, jak přicházeli. Jak jsem již říkal, úroveň je jen jedna, i když náhodně generovaná, takže po zadupání posledního pavouka se jen přehraje nepříjemný zvuk a hra se přepne zpět do menu. Nikde se ani nezobrazí žádný nápis.

Verdikt: Jednoduchá hříčka na pár minut, ve které hraje velkou roli náhoda - úrovně jsou generované náhodně, nepřátelé se pohybují náhodně - s trochou smůly můžete skončit po pár vteřinách bez možnosti úniku. Hodně mi vadilo krkolomné ovládání a přítomnost pouze jednoho levelu.
Hodnocení: **/10

Hra 12: Space Invaders (1985)


Space Invaders
Vývojář: Ivan Fedorko
Vydavatel: IFO Software
Vydáno 1985 pro PMD 85
Žánr: Arkáda
Počet hráčů: 1
Stav: Dokončeno

Zatím jsme tu měli hry pro ZX Spectrum a také jednu pro ZX81. Je na čase nakousnout další velmi rozšířenou platformu a tou byla domácí Tesla PMD 85. Počítač, který vymyslel Ing. Roman Kišš (rozhovor při příležitosti 30. výročí), se začal vyrábět v roce 1985 a dodávaný byl primárně do škol na Slovensku. Nabízel stejně jako Spectrum 48kB RAM, ale pouze černobílé zobrazení. V západní polovině Československa byla rozšířená jeho obdoba, počítač IQ 151, ale o tom někdy příště. Pro nás je důležité, že existuje fanweb s velice kvalitním emulátorem, takže nebude problém si většinu her zahrát. 

Tesla PMD 85-1; zdroj: wikipedia

Space Invaders samozřejmě vychází ze stejnojmenné předlohy z roku 1978, ale odlišností je tolik, že se to nedá prohlásit za předělávku. Jak už jste si mohli přečíst z textu úvodního obrázku, "Zem byla napadená vetřelci z vesmíru a lidstvo je ohrožené. Naší úlohou je odrazit útok na Zemi a zničit nepřátelské roboty". Zase ti roboti, tehdejší tvůrci jimi byli posedlí. V původní hře to jsou "prostě alieni". 

Původní Space Invaders (1978); zdroj: wikipedia
Verze pro PMD 85

Stále máme jakousi raketku, se kterou se můžeme pohybovat pouze do stran a střílet. Nepřátelé přilétávají z vrchu a snaží se dostat na naší úroveň dřív, než je sestřelíme. Tím ale podobnost s předlohou končí. Rozdíly jsou následující: 

  • Nepřátelé nejsou srovnáni do bloků a nepohybují se ze strany na stranu, ale letí přímo dolů a to různou rychlostí.
  • Nepřátelé nestřílejí, jsou to spíše "kamikaze" a snaží se doletět dolů a zapíchnout se do čáry, která představuje Zemi. 
  • Ve hře jste vlastně nesmrtelní - kontakt s nepřítelem nic neznamená, prostě jen musíte zabránit tomu, aby se 3 z nich dostali až dolů
  • Nemáte před sebou zdi. 
  • Pohyb nepřátel se s jejich ubývajícím počtem nezrychluje.

Zdá se, že pozice, rychlost a počet nepřátel se generuje náhodně a vychází z nastavení obtížnosti, kterou si volíte na začátku (začátečník, amatér, pokročilý, profesionál, superman). Já si na začátek věřil a zvolil jsem "pokročilého", ale hodně rychle jsem vystřízlivěl a další pokus začal na nejnižší obtížnost, která se dá dohrát už poměrně snadno. Poté, co odrazíte všechny útočníky, se vaše raketa rozletí dopředu a zobrazí se opět úvodní obrazovka. 

Pokud vás zajímá jako mě, jestli se spustí nějaký jiný konec, pokud hru dohrajeme na nejtěžší obtížnost, tak to se nikdy nedozvíme, protože "superman" obtížnost je evidentní vtípek, kdy se na obrazovce objeví několik desítek rychle letících nepřátel najednou a během 5 vteřin je konec. Je naprosto nemožné tohle vyhrát. 

Nejtěžší obtížnost je nemožně těžká
Vítězný screen

Verdikt: Oproti předloze je hra méně propracovaná a v podstatě tu máme jen "kamikaze" nepřátelé letící dolů. Žádné bonusy, žádné vychytávky, nic. Kdyby tu místo nepřátelských robotů byly jablka a my pohybovali s košíkem, tak by to vyšlo na stejno. 
Hodnocení: **/10

čtvrtek 9. března 2017

Hra 11: Itemiada (1985)


Itemiada
Vývojář: Miroslav Fídler
Vydavatel: Cybexlab Software
Vydáno 1985 pro ZX Spectrum
Žánr: Plošinovka
Počet hráčů: 1
Stav: Dokončeno

Zatímco předchozí Fídlerova hra - Maglaxians - byl klon Manic Minera, Itemiada je klon jeho duchovního nástupce - Jet Set Willyho. Opět se jedná o plošinovku, kde s postavou skákáme, sbíráme blikající předměty a vyhýbáme se nepřátelům, kteří se pohybují stále po stejné trase. 

Počáteční lokace, uprostřed vidíte první sebratelný předmět

Přesto je zde oproti Maglaxians, respektive Manic Minerovi pár podstatných rozdílů, které dost mění hratelnost:
  1. Svět je "openworld" - to znamená že všechny lokace (je jich tu 30) jsou pospojované dohromady a můžete se mezi nimi volně pohybovat a vracet se libovolně do již navštívených. 
  2. Není tu "kyslík" - neexistuje tu časový limit, takže se klidně můžete schovat na klidné místečko a na chvíli vydechnout.
  3. Sebratelných předmětů je dohromady 11, takže nejsou na každé obrazovce.
  4. Oproti Maglaxians tu najdeme různé "bodáky", na které můžete naskočit a zabít se. Není to tedy tentokrát jen o nepřátelích.
  5. Pád z výšky nezabíjí nikdy.
Celé mi to přijde takové "víc pohodové", protože jakmile si nakreslíte mapu (nebo si ji stáhnete - mapa ale není přesná, ve hře jsou některé stěny trochu jinak) a přijdete na pár triků, tak už není zas tak těžké většinu předmětů sebrat. Přesto se ale najdou výjimky...

Moje noční můra

Nevím, jestli na to existuje nějaká finta, na kterou jsem nepřišel, ale na obrázku výše je obrazovka, kterou jsem se snažil vyřešit hodně dlouho. Na jakémsi "stromečku" běhají dva roboti Karlové (opravdu jim tam scrolluje jméno Karel, což je narážka na stejnojmenný programovací jazyk) a ten zelený běhá hodně rychle a až k modrému vrtulníku, takže není možné se mezi nimi zastavit. Když už se nějak podaří vyskočit výše, tak vás dostane druhý Karel. Tahle obrazovka je nesmyslně těžká! Naštěstí se mi nakonec nějakým zázrakem podařilo proskočit, ale už ani nevím jak. Na "férovku", bez zneužívání savestates bych to ale tedy hrát nechtěl. 


Na odemknutí teleporteru potřebujete najít klíč
Další krok je jeho aktivace

Největší záhada ve hře je "teleporter", jenž najdete na jedné obrazovce a který je na začátku za neprůchozí stěnou. Abyste ho odemknuli, je třeba najít nejdříve klíč, ten použijete na odemknutí teleportu u jakéhosi zvláštního zámku. Dále teleport na jiném místě aktivujete a na závěr musíte sebrat jeden předmět, který vám navíc přidá jeden život. Tím neviditelná stěna zmizí a teleporter lze použít.

Konečně je teleporter přístupný (vlevo nahoře)
Jakmile ho použijete, hra párkrát zabliká "teleporting"

Po teleportaci se ocitnete na jinak nepřístupné obrazovce (pokud se kouknete na mapu, tak je to ta část vlevo). Nedalo mi to a zkusil jsem se na to místo dostat bez použití teleportu a jde to, i když je to opravdu hodně těžké. Teleporter je prostě velké usnadnění. Odsud musíte skočit do hodně hluboké propasti a trefit se přesně tak, abyste nedopadli na bodáky. Pak konečně lze sebrat asi nejhůře dostupný item a dojít na obrazovku, která obsahuje blok s nápisem "FINISH". Pokud máte všech 11 itemů, začnou z něho lítat pixely (doslova) a vyskočí nápis "Congratulation".

Vítězný screen - nápis "Finish" vpravo nahoře se rozpadá na pixely

Verdikt
: Další klon zahraniční hry od Mirka Fídlera a další dobře hratelný kousek. "Openworld" element se mi líbí, navíc je tu čas se zastavit a vše si dobře promyslet a naplánovat. Chtěl bych ještě, aby tady ubylo takových těch brutálně těžkých skákacích sekvencí, na kterých hráč může během chvilky přijít o všechny životy.
Hodnocení: *****/10

pondělí 6. března 2017

Hra 10: Maglaxians (1985)


Maglaxians
Vývojář: Miroslav Fídler
Vydavatel: Cybexlab Software
Vydáno 1985 pro ZX Spectrum
Žánr: Plošinovka
Počet hráčů: 1
Stav: Dokončeno

Se hrou Maglaxians se dostáváme k Miroslavu Fídlerovi, což byl další plodný autor her na ZX Spectrum. Na několika hrách spolupracoval s již zmíněným Františkem Fukou a také svým kamarádem Tomášem Rylkem, kterému snad nikdo neřekl jinak než "T.R.C". Tito tři později vydávali hry pod značkou "Golden Triangle", ale o tom později. Zajímavé je zjištění, že Fídler se o mnoho let později podílel na tvorbě známé adventury Gooka (1997).

Zleva M. Fídler, T. Rylek, F. Fuka (2004); Zdroj: games.cz

Fídler začal programovat ve 12 letech a první počítače, se kterými přišel do styku byly ZX80/81 (zdroj: časopis BiT 03/92)

"Asi tak od roku 1984 dostal T.R.C. Spectrum a od té doby jsem hodně času trávil u něho. Dokonce jsem u něj vyrobil své první hry (Maglaxians, Itemiada, Alien Attack). Asi od roku 1986 mám svého gumáka. "

Hru, na kterou se dnes podíváme, tedy naprogramoval ve svých 15 letech na počítači svého kamaráda, což je obdivuhodné. Jak jsem psal v minulém článku, Manic Miner byla v té době velmi oblíbená a napodobovaná hra a Maglaxians jsou toho důkazem. Jádro hratelnosti je stejné - ovládáte postavu, která musí sesbírat v každé úrovni blikající předměty, čímž se jí otevře cesta dál. Proti jsou nepřátelé pohybující se po stále stejné trase a různé překážky jako je jezdící podlaha či ubývající kyslík (časový limit). 

První úroveň

Manic Miner byla velmi obtížná hra, která obsahovala 20 levelů a málokdo ji dohrál. Když jsem se tedy dozvěděl, že tady jich je 128 (mapa), tak mě polil studený pot, naštěstí jsem brzy zjistil, že obtížnost je o něco nižší. Rozdílů je několik:

  1. Chybí tu věci, o které se můžete zabít (různé krápníky a keříky), založené je to spíše na vyhýbání se protivníkům
  2. Už od začátku máte víc životů - 23 oproti 3
  3. Za každých 1000 bodů získáte další život
  4. Nejsou tu propadávající se podlahy
  5. Můžete spadnout z daleko větší výšky bez újmy (ale stále je možné se zabít)

I když se úrovně podle mapy nemusejí zdát těžké, opak je pravdou. Líbilo se mi, že jsou někdy opravdu chytře nadesignované tak, aby vám nepřátelé "vletěli" do cesty v ten nejméně vhodný okamžik, čímž na vás vytvářejí tlak. Načasování a na pixel přesné skoky jsou tu nutnost. Občas musíte předvést sekvenci několika přesných skoků, abyste proskákali dál a nepřátelé vás nedostali.

Level 112

Často také musíte přemýšlet jak to vlastně udělat, protože tu jsou podlahy, které jdou proskočit zezdola nahoru, ale opačným směrem už ne. Když si k tomu připočtete určitá specifika, kdy skákat můžete jen do fixní vzdálenosti a výšky a navíc nelze "zatáčet ve vzduchu" jako ve většině plošinovkách, tak se najednou i z lehce vypadajícího levelu může stát noční můra. Alespoň časový limit je tu hodně milosrdný a slouží spíš jen na výpočet bonusu (zbývající kyslík se přeleje do skóre), než že by vytvářel tlak na hráče jako v původním Manic Mineru, kde jsem na to v některých úrovních dojel.

Co se týče zpracování, tak nemám výhrady. Jednoduchá grafika úplně stačí a ozvučení je přijatelné. Jakmile projdete prvních pár levelů a zvyknete si na to, jakým způsobem se postava pohybuje, tak už jen hltáte jeden level za druhým. Bugy jsem nenašel žádné, vadila mi jen trochu nevyvážená obtížnost, kdy některé úrovně ke konci byly směšně lehké.

V poslední levelu nasednete do rakety, která vzlétne, dostane se do vesmíru a na poslední obrazovce uvidíte obrys nějaké planety, načež se hra restartuje. Achjo, po takové dřině jsem chtěl alespoň screen s nápisem "Vyhrál jste" a moje konečné skóre.

Můžete se kouknout také na walkthrough na youtube, které trvá skoro 2 a půl hodiny a to ten člověk samozřejmě neumírá tak, jak bude umírat normální hráč, takže délka a trvanlivost hry je velmi slušná.

Poslední level s raketou, do které musíte sebrat palivo
Vítězný screen

Verdikt: Velice dobře udělaný klon Manic Minera, který je o něco lehčí a přístupnější. Na jeho dohrání nejsou potřeba tak rozvinuté "ninja skills", ale přesto je to výzva. Velká porce úrovní zaručuje slušnou herní dobu. 

Hodnocení: *****/10