Hra VLAK (The Train)
Odkazy:
Vlak online: https://makerclass.cz/train-original/
Vlak na Steamu: https://store.steampowered.com/app/4122730/VLAK/
Vlak na Wikipedii: https://cs.wikipedia.org/wiki/Vlak_(počítačová_hra)
Vlak na YouTube: https://www.youtube.com/playlist?list=PL84lNp7Gie34PqwHGBN5Ck3pU06tnKAHW
Vlak je freeware hra na principu Hada. Úkolem hry je posbírat všechny předměty, vyhýbat se překážkám a nakonec projet výstupní branou. Hru jsem vytvořil v roce 1993 pod systémem MS-DOS. Hra obsahuje 50 scén. Nečekal jsem tehdy, že se hra stane mezi lidmi tak populární a známou. Ještě i dnes se na mě lidé kvůli Vlaku obracejí a vzpomínají, že Vlak byla oblíbená hra jejich mládí.
Budete-li chtít hru Vlak portovat pod jiné systémy či na jiné zařízení, doporučuji použít zdrojové soubory z verze 2.20 pro PicoPad (jsou psané v v programovacím jazyku C), a pro grafiku použít grafické soubory z verze 2.10 pro Windows (mají vyšší rozlišení, políčka 32x32 pixelů).
Licence: Hra je plně freeware a open source - kterékoliv podklady zde uvedené (grafika, zvuky, zdrojové kódy) můžete volně používat k jakýmkoliv účelům, včetně komerčních.
byla první verze Vlaku, pro MS-DOS, s datem vydání 29.05.1993. Distribuovali jsme ji původně jako součást souborového manažeru DOS Manažer (DOSMAN). Grafiku jsem vytvářel v DOS grafickém editoru Deluxe Paint, a poté ji převáděl do "svého" formátu pomocí programu ANIMSCR (snímač obrazovky), který je součástí animačního programu ANIM. Hra vyžaduje graficku kartu EGA nebo VGA. Používá grafický mód 13 (0x0D, 0Dh), tedy rozlišení 320x200, 16 barev. Předměty mají rozměr 16x16 pixelů. Hrací plocha je rozdělena na 20x12 políček, plus info řádek vysoký 8 linek. Komentáře zdrojového kódu hry jsou v češtině, v kódu KEBCS2 (Kamenických). Pro lepší čitelnost jsem dodatečně doplnil do zdrojových kódů i soubor VLAK_WIN1250.ASM, zkonvertovaný na kód Windows-1250.
Program jsem psal v assembleru x86. K editaci programu jsem používal textový editor KONTEXT.COM a program překládal překladačem Turbo Assembler. Výsledkem překladu byl program VLAK.COM o velikosti 39378 bajtů. Ten jsem zkomprimoval svým vlastním komprimačním programem PROCOMP.COM (= Program Compressor) a opatřil pojistkou POJ.COM, chránící program proti virům pomocí sebekontroly. Výsledkem byl program VLAK.COM veliký 13154 bajtů.
Ve scénách se sbírá 18 předmětů: 1 krystal, 2 koruna, 3 strom, 4 jablko, 5 kráva, 6 třešně, 7 rybník, 8 žirafa, 9 zmrzlina, 10 dort, 11 počítač, 12 auto, 13 balón, 14 budík, 15 slon, 16 víno, 17 peníze, 18 letadlo. Program se při startu kalibruje podle časovače na adrese 0000h:046Ch (hodiny s frekvencí 18,20651 Hz, perioda 0,05492540 sekundy, za den 1573043 pulzů, odvozeno z krystalu 1193182 Hz po dělení 65536; AT Bios používá periodu 1573040). Funkce Cekej() čeká po zadanou dobu v milisekundách a používá se pro krátké časy (zvuk). Pro animaci předmětů a pohyb vlaku se používá časovač na adrese 0000h:046Ch - jeden krok vlaku a jeden cyklus animací trvá 3 pulsy časovače, tedy interval 165 milisekund. Stav hry se neukládá - namísto toho se hráči zobrazí heslo, kterým se příště může dostat zpět za poslední ukončenou scénu.
Download hry Vlak 1.00, spolu se zdrojovými soubory
Vlak 1.0 na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/HRY/VLAK/V100
Grafika hry:
Po úspěchu první verze hry jsem se rozhodl vydat novou verzi hry. Vycházela z požadavku uživatelů, aby si mohli vytvářet vlastní scény hry. Vlak verze 2.00, pro MS-DOS, byl vydán 22.05.1995. Psal jsem ho opět v assembleru x86. Zásadním rozdílem bylo, že hra byla vytvořena jako kit, který mohl uživatel modifikovat a editovat scény. Samotný program se přeložil Turbo Assemblerem, vznikl soubor VLAK.EXE, velký 123715 bajtů (obsahoval mnoho volného místa pro načítání dat). Program se poté zkomprimoval programem LZEXE (komprimátor EXE programů) do souboru VLAK$.EXE, o velikosti 5918 bajtů. Kromě toho se zkomprimovaly pomocí programu HLPGEN.COM datové soubory VLAK.SCN, obsahující definici scén, a VLAK.PCX, obsahující grafiku hry, do souborů VLAK$.SCN a VLAK$.PCX.
Hra se nespouštěla přímým spouštěním programu, ale přes povelový soubor VLAK.BAT, který hru spouštěl příkazem "@vlak$.com vlak$.exe". Jako spouštěcí program VLAK$.COM zde byl použit program HLPRUN.COM, přejmenovaný na VLAK$.COM. Při spuštění program HLPRUN spustil program VLAK$.EXE, zadaný jako parametr, a monitoroval přístupy programu k souborům. Pokud detekoval, že program otevírá soubor zkomprimovaný programem HLPGEN, načítaná data na pozadí dekomprimoval. Díky tomuto procesu bylo možné, aby soubory výsledné distribuce hry zabíraly dohromady pouze 24176 bajtů, a přesto mohl kdokoliv modifikovat scény a grafiku hry, aniž měl k dispozici zdrojový kód hry. Aby se však zabránilo nahlížení běžných hráčů do řešení scén a hesel, byl návod minimalizován pouze na doporučení, jakým příkazem soubory rozbalit, a podrobnější informace byly popsány až v souboru VLAK.SCN. K dekompresi souborů lze použít i program HLP.COM.
Soubor VLAK.SCN, v rozbaleném stavu, je běžný textový soubor (skript). Znak středníku ';' označuje řádek s komentářem. První neprázdné řádky obsahují text, který se vypíše jako hlášení při ukončení programu. Text hlášení je ukončen znakem dolaru '$'. Každá scéna začíná řádkem s heslem, dlouhým 5 znaků. Následuje řádek (nebo více) makra s řešením scény, uvozený znakem vykřičníku '!'. Obsahuje písmena U,D,L,R pro řízení směru pohybu, zakončeno písmenem 'S' pro zastavení. Za makrem řešení následuje 12 řádků, o délce 20 sloupců, s definicí scény. Definice obsahuje tyto znaky: . nic, $ lokomotiva, @ brána, A krystal, B koruna, C strom, D jablko, E kráva, F třešně, G rybník, H žirafa, I zmrzlina, J dort, K počítač, L auto, M balón, N budík, O slon, P víno, Q peníze, R letadlo, S Lemming, T rezerva 2, # zeď.
Komentáře zdrojového kódu hry jsou v češtině, v kódu KEBCS2 (Kamenických). Pro lepší čitelnost jsem dodatečně doplnil do zdrojových kódů i soubory VLAK_WIN1250.ASM a VLAK_WIN1250.SCN, zkonvertované na kód Windows-1250.
Dalším rozdílem oproti verzi 1.00 je podpora grafické karty Hercules - barvy se na ní zobrazí jako úrovně šedé. Ve hře lze klávesou F1 přehrát řešení scény - řešení se přehraje jako makro ze souboru VLAK.SCN. Řešení náhodně zvolené scény se přehrává také na místě úvodní obrazovky, při neaktivitě hráče. Posledním významnějším rozdílem je zobrazení náhodných hlášek v případě, když hráč nabourá.
Seznam hlášek (v kódu Windows-1250, český jazyk)
Download hry Vlak 2.00, spolu se zdrojovými soubory
Vlak 2.00 na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/HRY/VLAK/V200
Grafika hry:
Neoficiálně, na popud dcery, vznikla ještě zvláštní verze hry, kde namísto lokomotivy běhala kočka za myší. Tato verze se však nikde neobjevila:
Vlak verze 2.01 nebyl ani tak novou verzí hry, byl pouhou modifikací souborů. Byl vydán 26.05.1995. Vznikl z důvodu zlepšení grafiky pro monochromatické monitory. V povelovém souboru VLAK.BAT byl volán program DETCARD.COM, který detekoval buď barevný, nebo monochromatický displej. Podle výsledku detekce byl pro grafiku použit buď původní soubor s barevnou grafikou, nebo soubor s omezenou černobílou grafikou.
Vlak 2.01 na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/HRY/VLAK/V201
Vlak verze 2.10 vznikl jako součást ukázkových programů aplikace Gemtree Petr (nebo Petr na GitHub). Byl uveden spolu s první verzí programu Petr 1.00 ke dni dětí dne 1.6.1999. Jednalo se již o Windows verzi - k provozu vyžaduje Windows 95 a vyšší. Program je z těchto důvodů již poněkud větší - 598528 bajtů. Kromě toho, že se jedná o Windows program, je největší změnou vyšší rozlišení. DOS verze pracovala v rozlišení 320x200 pixelů, zatímco Windows verze používá rozlišení obrazu 640x416 pixelů a 224 barev. Ikony se zvětšily z rozměru 16x16 pixelů na rozměr 32x32 pixelů. Hra byla distribuovaná spolu se zdrojovým kódem. Zdrojový kód zde ovšem není v textové podobě, ale v podobě strukturovaných dat. Zdrojový kód se zobrazí otevřením programu v editoru Gemtree Petr. Hra opět obsahuje řešení scén na klávesu F1, ale již neobsahuje hlášky při srážce vlaku.
Vlak 2.10 na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/HRY/VLAK/V210
Grafika hry:
Vlak do Becherovky byla verze hry, která vznikla do soutěže pořádané firmou Becherovka v roce 2009. Datum uvedení hry je 20.5.2009. Hra byla vytvořena v Macromedia Flash 8 Pro trial. Jedná se tedy o Flash program, vyžadující Flash přehrávač. Dnes už Flash přehrávač není podporován web browsery, ale hru je ještě možné spustit jako EXE program. Hra je v anglickém i českém jazyce. Podporuje odesílání skore do tabulky skore, ale ta byla umístěna na serveru Becherovky, a dnes je tudíž ukládání skore už nefunkční.
Download hry Vlak do Becherovky, spolu se zdrojovým souborem pro editor Flash
Vlak do Becherovky na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/HRY/VLAK/BECHER
Vlak verze 2.20 není přímo novější verzí hry. Je to port do herní konzole PicoPad, s modulem Raspberry Pico RP2040 a displejem ST7789 s rozlišením 320x240 pixelů, 16-bitové barvy. Hra používá původní 16-barevnou grafiku Vlaku verze 2.00, pro rozlišení 320x200 pixelů. Rozměr políček je 16x16 pixelů. Výhodou této verze je, že je psaná v programovacím jazyku C, a je tak snadno přenositelná i pod jiné systémy či do jiných zařízení. Hra vyžaduje k překladu pro PicoPad knihovnu PicoLibSDK, ale pro jiné systémy by měla být snadno nahraditelná. Hra byla zveřejněna spolu s uvedením první verze knihovny PicoLibSDK, dne 8.3.2023.
Download hry Vlak 2.20 pro PicoPad, spolu se zdrojovými soubory
Vlak 2.20 pro PicoPad na GitHub: https://github.com/Panda381/PicoLibSDK/tree/main/PicoPad/GAME/TRAIN

Grafika hry:
Hra je v podstatě stejná jako verze 2.20 pro PicoPad, liší se jen v drobnostech, jako jiný formát grafiky. Výstup je na VGA monitor, v rozlišení 320x240 pixelů, 8-bitů na pixel. Hra vyžaduje k překladu pro PicoPad knihovnu PicoLibSDK.
Download hry Vlak pro Picoino, spolu se zdrojovými soubory
Vlak pro Picoino na GitHub: https://github.com/Panda381/PicoLibSDK/tree/main/Picoino/GAME/TRAIN
Hra je v podstatě stejná jako verze 2.20 pro PicoPad, liší se jen v drobnostech, jako ovládání přes USB klávesnici. Výstup je na VGA monitor, v rozlišení 320x240 pixelů, 8-bitů na pixel. Hra vyžaduje k překladu pro PicoPad knihovnu PicoLibSDK.
Download hry Vlak pro DemoVGA, spolu se zdrojovými soubory
Vlak pro DemoVGA na GitHub: https://github.com/Panda381/PicoLibSDK/tree/main/DemoVGA/GAMES/TRAIN
Tato verze hry vznikla jako ukázková hra po konzoli PidiPad. Jedná se o minimalistickou konzoli s levným procesorem CH32V006E8R6. Software vznikl minimalizací kódu verze 2.20 pro PicoPad, s uzpůsobením na menší rozlišení 160x120 pixelů, 16 barev. Políčka mají rozměr 8x8 pixelů. Grafika není plně 16-barevná, používá se redukovaná atributová grafika s buňkou 2x2 pixely. Výstup je na VGA monitor. Hra vyžaduje k překladu knihovnu CH32LibSDK.
Download hry Vlak pro PidiPad, spolu se zdrojovými soubory
Vlak pro PidiPad na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Pidipad/Games/Train

Grafika hry:
![]()
Vlak pro TweetyBoy je další redukovanou verzí hry, pro konzoli TweetyBoy, z původní verze 2.20 pro PicoPad, s uzpůsobením na menší rozlišení 160x80 pixelů, 16 barev. Políčka mají rozměr 8x6 pixelů. Hra vyžaduje k překladu knihovnu CH32LibSDK.
Download hry Vlak pro TweetyBoy, spolu se zdrojovými soubory
Vlak pro TweetyBoy na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Tweetyboy/Games/Train

Grafika hry:
![]()
Redukovaná verze hry pro konzole BabyPad a BabyPC, rozlišení 160x120 pixelů, černobílý výstup na VGA monitor. Rozměr políček je 8x8 pixelů. Hra vyžaduje k překladu knihovnu CH32LibSDK.
Download hry Vlak pro BabyPad, spolu se zdrojovými soubory
Download hry Vlak pro BabyPC, spolu se zdrojovými soubory
Vlak pro BabyPad na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Babypad/Games/Train
Vlak pro BabyPC na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Babypc/Games/Train
Grafika hry:
![]()
Redukovaná verze hry pro konzole BabyBoy, BeatleBoyPad a PidiBoy, s rozlišením 128x64, černobílé. Rozměr políček je 6x5 pixelů. Hra vyžaduje k překladu knihovnu CH32LibSDK.
Download hry Vlak pro BabyBoy, spolu se zdrojovými soubory
Download hry Vlak pro BeatleBoyPad, spolu se zdrojovými soubory
Download hry Vlak pro PidiBoy, spolu se zdrojovými soubory
Vlak pro BabyBoy na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Babyboy/Games/Train
Vlak pro BeatleBoyPad na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Beatleboypad/CH32V002/Train
Vlak pro PidiBoy na GitHub: https://github.com/Panda381/CH32LibSDK/tree/main/Pidiboy/Games/Train
Grafika hry:
![]()
Makra s řešením scén: MACRO.TXT
0: intro ... Řešení scén na YouTube
Vlak se nikdy nedočkal oficiální distribuce jako samostatná hra. Proto jsem před pár lety, na žádost uživatelů, vydal Multi-edici programů Gema Soft/Gemtree, jako poslední oficiální distribuci mého software naší bývalé firmy. Součástí distribuce byla, kromě programů DOS Manažer a Gemtree Peter, také disketa s vydáním hry Vlak. Dnes jsou všechny balíčky již rozebrané mezi sběrateli, ale většina podkladů k jejich výrobě je k dispozici na GitHub: https://github.com/Panda381/DOS-Progs.
Obraz 1.44MB diskety s hrou Vlak naleznete v souboru VLAK.DSK. Obraz lze na disketu zapsat např. programem DOS Manažer, funkce kopie disku. Souborový obsah disket je ve složce https://github.com/Panda381/DOS-Progs/tree/main/!DISKETY/VLAK. Grafický podklad pro vytištění štítku diskety naleznete v souboru FD_VLAK.PNG. Grafické podklady jsem tisknul na samolepící papíry pro popisky CD, s formátem A4. Soubor BOX-VLAK.png obsahuje grafiku pro tisk obálky diskety. Ten jsem tisknul na "kladívkovou čtvrtku".

Téměř všechny DOS programy jsem editoval v textovém editoru KonText. Původně se jedná o editor ConText v2.2 od německého autora (c) 1989 DMV Software - Matthias Uphoff. Editor se mi velmi zalíbil, díky jednoduchosti ovládání a přitom bohatosti funkcí. Editor jsem předělal do češtiny a přeprogramoval drivery pro displej. Především jsem vytvořil driver umožňující i textový videorežim, díky čemuž se KonText stal výborným a rychlým editorem, vhodným i pro psaný zdrojových kódů programů. Za tím účelem jsem tam i vylepšil některé funkce. Byla např. šikovná funkce značek v souboru, kdy se dalo rychle a pohodlně přeskakovat mezi různými místy psaného programu. Po domluvě s původní firmou jsme KonText distribuovali na českém trhu. Dodnes si myslím, že v té době neexistoval lepší textový editor pro psaní nejen programů, ale i pro formátovaný text (a to porovnávám i s tehdy populárním T602).
Download české verze editoru KonText pro DOS
KonText na GitHub: https://github.com/Panda381/DOS-Progs/tree/main/KONTEXT
Vlak online: https://makerclass.cz/train-original/
Vlak na Steamu: https://store.steampowered.com/app/4122730/VLAK/
... zde budu později doplňovat cizí klony hry Vlak
Miroslav Němeček