Amatérské šachové programy

      Amatérské programování šachů není sice příliš obvyklá záležitost, ale přece jen se našlo u nás pár jedinců, kteří se rozhodli napsat svůj vlastní šachový prográmek a hlavně ho pak uveřejnit na netu. Vzhledem k tomu, že patřím mezi tu hrstku a při svém hledání informací týkající se této oblasti jsem našel jen izolované osobní stránky věnované jednomu programu, jsem se rozhodl napsat stránku, která by aspoň vyjmenovala a stručně popsala všechny domácí amatérské šachové programy. A v neposlední řadě tím udělal, přes zvýšený počet klíčových slov v textu, reklamu tomu svému. :)
    Profil autorů bývá docela podobný. Jedná se většinou o studenta, který dostane za program zápočet. Za svého mrzáčka se nijak nestydí a kromě jména uvádí občas hrdě i svoji fotografii :).

       Zaměřil jsem se hlavně na cílový operační systém, velikost programu, v čem byl psán, jestli umí branní mimochodem, jestli při transformaci pěšce lze vybrat figurku, znají-li remízová pravidla, šíři příkazů, hlavně zda lze vrátit tah a zda ukládají do české notace, jak pohodlné je ovládání...


MicroChess 2.0 Zdroják ] [DOS/EXE Borland Pascal 7.0 + aPACK v0.99b/23.785 b/07.03.2003]

      Na prvním místě uvedu samozřejmě svůj program :) Jedná se o DOS aplikaci běžící v textovém módu a ovládanou výhradně klávesnicí se silou o trochu menší než Honzovi šachy 2000, v koncovce se projeví malá velikost hash tabulky. Obsahuje všechny základní nabídky: uložení, načtení, editace, analytický mód. Jako jediné umí zadání tahu i přes českou notaci, takže je lze požít pro snadné přepsání a prohlížení slavných partií("e4 e5" + Enter). Neumí remízové pravidlo o 50 tazích, kdy nikdo netáhne pěšcem ani nebere. Pro vnitřní reprezentaci dat používá šachovnici 0x88. Kvůli optimalizaci pro assembler s jeho variabilitou podmínkových skoků JS,JP,JZ a instrukcí AND, OR, XOR používá pro kameny definici: 0-prázdné, 1-pěšec, 2-jezdec, 4-střelec, 8-věž, 16-dáma, 32-král, 64-bílý, 128-černý, 192-okraj. To umožňuje psát, až na pěšce, rychlé fce nezávisle na barvě.
      Nynější podoba programu je výsledkem předchozího vývoje. Všechno podstatné se odehrálo v první nanosekundě po Velkém třesku... :) ...ZX mě prakticky přinutilo naučit se programovat, klíčovou literaturou byly knihy ZX Spectrum(překlad manuálu + programování ve strojovém kódu) - Zd..? a Skúsiš programovať? - Lisy Wattsové a Gaby Waterse. Tehdy se formuloval i můj názor na "dobrý program". První nedokončený šachový program jsem napsal až v QBasicu na PC a běžel v grafickém módu. Algoritmy jsem pracně vymýšlel sám (minimax) a tak jsem byl rád, že to vůbec hraje. Po bolestném přechodu na Pascal jsem se radoval ze svého prvního egzáče. Zvýšením rychlosti a objevením dohledání do klidové pozice vzrostla herní síla programu. Díky zájmu o hranici vyjádření v textovém režimu (např. simulátor v txt :) jsem přidal textový režim hry. Neměl jsem vlastní grafickou unitu, protože základ pro ni: Urbanovu unitu pro VGA mód 13h a článek "Programování grafických karet EGA a VGA" v Computerworldu 35/94 jsem ještě neznal a tak byl odkázán na úděsnou Borlandí Egavga.bgi. Měl jsem tedy duální fce, a ani jsem neuměl začlenit BGI přímo do EXE, tak jsem nakonec grafiku úplně zrušil. Zvolil jsem si velmi malé jednosouborové šachy v textovém módu jako vlastní kategorii, kterou se odliším od konkurence. Když už ne silnější, tak být aspoň menší a mít přehlednější textovou grafiku(předefinování fontů v Cometu jsem ještě neviděl). Asi rok poté jsem se i přes nevalnou úroveň podepsal pod MicroChess 0.1. Důležitý krok bylo přečtení knihy:"Šachy na PC" od Dietera Steinwendera a Frederica A. Friedela. Algoritmus alfa-beta, hash tabulky(i když jen 128Kb pro každou barvu), nulový tah hodně zvedly ELO. Nedá se ale říci, že bych díky ní vše hned okamžitě chápal. Na spoustu otázek, které se vynořily při pokusu aplikovat teorii jsem nenašel odpověď. Program připomíná složitou směs algoritmů. Testování jejich vzájemných účinků, modifikace a vyladění na nejvyšší výkon zabírá nechutně mnoho času.


Honzovy šachy 2001
[Windows 95-NT/EXE Visual C++ 5.0, Linker 5.0/134.144 + 687.268 b/28.07.2001]
[Linux/ ? / ? b/ ?]

      Nejznámější a pravděpodobně i nejsilnější domácí amatérský šachový program. Nehrál jsem s ním ještě proti slibnému Idiot 1.2, u kterého se mi ale nedaří nastavit přesný čas na tah. Existuje ve verzi pro Linux i pro Windows 95+. Ovládá se výhradně myší. Obsahuje všechny základní operace jako uložení, načtení a editaci pozice. Ovládá všechny i méně známá pravidla šachu. Jeho autory jsou Petr Kučera a Jan Němec, na jejichž stránce se dozvíte více. Dá se stáhnout i se zdrojáky psané v Céčku.


Honzovy šachy 1350 [Windows 3.10+/EXE Microsoft C, Linker 6.1/529.408 + 167.440 b/21.09.1998]

      Ročníkový projekt Jana Němce. Jedná se o šachový program pro Windows 3.10+, takže samozřejmě běží v grafickém režimu a ovládají se myší. Uživatelsky jsou velmi příjemné, obsahují největší počet příkazů a udělátek, od základních nabídek po uživatelskou modifikaci pozičních tabulek. Kromě toho že znají všechny i méně známá pravidla, tak navíc jako jediné umí permanent brain (myšlení v době soupeře). ZIP obsahuje i zdrojáky psané v Céčku a šestistránkovou dokumentaci.


Honzovy šachy 1200
[DOS/EXE Borland Pascal 7.0/69.968 b/03.01.1997]
[DOS/EXE Borland C++ 3.?, TLink 5.0/153.125 + 15.593 b/29.04.1998]

      Nejstarší program od Jana Němce motivovaný zápočty a to hned ve dvou verzích zabalený se zdrojáky i dokumentací. Jednoduší je psaná v pascalu a komfortnější v céčku. Tentokrát pro DOS, běžící v grafickém módu a ovládaný pouze klávesnici. Programy znají tah mimochodem, remízu při trojnásobném opakování pozice a pravidlo 50 tahů. Používají alfa-beta algoritmus s jednoduchou poziční ohodnocovací fcí. Tah se zadává pomocí šipek a klávesy Enter. Jiné příkazy jsou trochu nepohodlně zpřístupněny pouze přes horní lištu aktivovanou klávesou F10.
      Pascalovská verze umí ukládat hru, ale bohužel ne do české notace, otáčet šachovnici, editovat pozici(bílé: PJSVDK; černé: pjsvdk; prázdné: 0), vracet tahy, volit barvy, předvést na šachovnici všechny legální tahy v pozici, ale chybí zde možnost nastavit obtížnost. Co dělá teorie se mi nepodařilo zjistit.
      Céčkovská verze umí vše co předchozí a navíc se dá nastavit obtížnost přes vteřinový limit, uložit soubor do "e2-e4" notace, přes vstupní a výstupní soubor s touto notaci hrát proti jinému programu. Obsahuje i zajímavě řešenou knihovničku pozic.


Miroslavovy šachy [DOS/COM TAsm? + TLink?/4.874 b/01.09.1993]

      Suverénně nejmenší šachy, jedná se o COM soubor o velikosti pouhých 4874 bajtů! Je to zároveň nejstarší šachový program napsaný v roce 1993 ing. Miroslavem Němečkem (GEMA Soft) v čistém assembleru. Běží i na nejstarších typech procesorů pod DOSem v textovém módu. Šedivá grafika s hodně zjednodušenou kresbou figur klade docela zvýšené nároky na toleranci hráče. Navíc důsledkem extrémně malé velikosti obsahuje program jediné volby: výběr strany, nebo zapnutí automatu a nastavení obtížnosti, která ani není dána časovým limitem. Pak už jen program akceptuje zadáni tahu klávesy: šipky,Home,End,PageUp,PageDown a Enter nebo ukončení hry pomocí ESC. Program nehraje přesně podle pravidel. Neumí transformaci pěšce na jinou figuru než je dáma a nezná remízové pravidlo o trojnásobném opakování pozice a asi ani ne o 50 tazích bez pohybu pěšce a bez braní. Ovládá ale tah mimochodem a ještě se mi nestalo, že by zahrál nelegálně. Největší slabinou programu je asi absence volby vrácení tahu. Dodává se i s komentovaným zdrojákem.


Danielovy šachy [DOS/EXE Turbo Pascal 6.0/62.224 + 274.432 b/02.03.2000]

      Šachový program od Daniela Krause psaný kvůli zápočtu z programování. Běží pod DOSem v grafickém módu a je ovládán výhradně klávesnicí. Používá prostý minimax algoritmus, takže jeho síla je velmi malá. Po spuštění se dá nastavit hráče a zvolit barvu, pak už kromě pohodlného zadání tahů pomocí šipek a Entru má už jen jediný příkaz, klávesu "K" ukončující hru, vracet tahy nelze. Program neumí branní mimochodem, při transformaci získáme za pěšce automaticky nejvyšší figurku o kterou jsme přišli, pokud jsem o nic nepřišli získáme "mrtvého" pěšce. Remízová pravidla nezná. K programu je dodáván i zdroják v pascalu.


Partie v1.01 [DOS/EXE Turbo Pascal? + PKLITE -e v2.01/213.414 b + 821 kb/11.09.2002]

      Tenhle program byl psán na soutěž programování Baltazar, kterou posléze vyhrál. Patří mezi tu hrstku programů běžících pod DOSem v grafickém módu ovládaných myší. Autory jsou bratři s odlišným příjmením Libor Tinka & Jakub Grós. Program obsahuje širokou nabídku příkazů, mimo jiné i blbůstky jako je pohled na trojrozměrnou šachovnici. V podstatě je nanic a je tam jen aby udělala dojem na porotu. Ukládat lze do textového souboru, ale bohužel ne hry začínající z editované pozice. Obtížnost dokáže nastavit i podle časového limitu. Tahle verze je bohužel vadná, dokonce se mi stalo že jeden král sebral druhého... :) takže nemá cenu zjišťovat jestli zná méně známá pravidla.


Oldřichovy šachy [Windows 3.0/EXE Microsoft C, Linker 5.30/232.656 b/27.11.2002]

      Při pokusu spustit šachy se objeví okénko oznamující nenalezení WEP4UTIL.DLL. Sken EXE ukázal, že se jedná o ničím nekomprimovanou Windows 3.0 aplikaci psanou v Microsoft C. Naštěstí je u programu krátké html v němž se dovíme, že autor je Oldřich Nič. Dostal jsem od autora mail s odkazem na funkční stránku, kde lze nalézt i chybějící knihovnu, bohužel už nemám moc času ani windows takže nemohu k tomu říci nic víc (9.12.2006). Program je domácí práce z předmětu 36PJC. Jedná se o jednoduché šachy téměř bez pozičního hodnocení používající metodu alfa-beta. Program neumí tah mimochodem, remízu při trojnásobném opakování pozice, nebo pravidlo 50 tahů.


Filipovy šachy [Windows 95-NT/EXE Borland Delphi 3-4/1.251.840 b/19.11.2002]

      Šachy pro Windows 95/NT od Filipa Höfera ovládané samozřejmě myší. Ze všech programů je tento největší, nepočítám přitom do velikosti externí dokumentaci nebo nápovědu. Program nabízí veškeré standardní fce. Editace pozice je ale trochu nepohodlná a obtížnost nelze nastavit přes časový limit, také uložit lze jen pozici do netextového souboru. Nesedí mně ani styl windows při ukládání vše strkat do adresáře Dokumenty, kdy pak musím pracně hledat aktuální adresář. Z pravidel neumí pouze remízu při 50 tazích, kdy žádná strana nebrala a ani nikdo neposunul pěšce.


Chess [DOS/EXE Turbo C++ 3.?, TLink 5.0/39.381 b/19.12.2001]

      U těchto šachů si nejsem jist, zda nejsou zahraniční. Autor není uveden a nápověda je psána anglicky. Domácí původ mají pouze figurky, vyjádřené zjednodušeně pomocí písmen P,J,S,V,D,K, ale ty se dají snadno "hacknout". Jedná se o nekomprimovaný 39381 bajtový EXE program běžící pod DOSem v textovém módu. K programu nejsou dodány zdrojáky, tak jsem aspoň testoval EXE. Je kompilován v Borland C++ v3.0 nebo vyšší(TLink 5.0). Na konci jsou uvedeny názvy procedur a fcí jak je u Céčka špatným zvykem. Všechny v anglicky... Ovládání je přes klávesnici. Tah se zadává nepohodlně souř. odkud kam. Lze změnit barvu, obtížnost přes vteřinový limit a vzdát se tahu ve prospěch soupeře, nelze vrátit tah. Nevypadá to na klon MiniMAXu, spíš na samostatný program, čemuž nasvědčují až neuvěřitelné chyby. Program je velmi slabý a hraje podivně. Např. bez jakéhokoliv tlaku "ohrožuje" nekrytým střelcem dámu. Nezná remízu při trojnásobném opakování pozice, u branní mimochodem zapomíná odebrat pěšce. Netransformuje pěšce na první nebo osmé řadě! Občas neakceptuje legální tah, plete si šach s matem, nebo vyhlásí mat jen tak...


Idiot 1.2 [DOS/EXE Turbo C++ 3.?, TLink 5.0/126.470 + 28.259 b/19.07.1998]

      Jeden z mála DOSovských programů běžících v grafice a ovládaných výhradně myší od Petra Stejskala. Někdy působí vyhýbání se klávesnici až nepřirozeně, např. při změně časového limitu, kdy se číslice mění při kliknutí 0,1,2...8,9,0 a na rychlejších procesorech je to trošku přecitlivělé. Nabídky programu jsou bohužel v angličtině. Umožňují otočit šachovnici, nastavit pozici, mód hledání matu, ukládání hry(ale ne do textového souboru), nastavení obtížnosti časovým limitem, vracení tahů. Program zná branní mimochodem, remízu při trojnásobném opakování pozice a asi i pravidlo 50 tahů, umožňuje transformaci pěšce na víc typů figur. Idiot vypadá nejprofesiálněji z dosovských programů a jeho síla je možná i vyšší než u Honzových šachů 2001.


Attax 0.5 [DOS/EXE Turbo C++ 3.1, TLink 5.0 + PKLite 2.01/46.170 b/07.06.1998]

      Jedná se o klon miniMAXu. Autorem je Lukáš Zapletal. V dokumentaci se hovoří o verzi 1.0, ale program ukazuje 0.5 tak nevím... Mám ho asi přes Chip-CD a na internetu sem ho našel jen na stránkách Pavla Háse(viz MaxRubin). Nevím jak moc byl mozek programu oproti originálu modifikován, ten používá alfa-beta algoritmus a killer heuristiku. Pravděpodobně byl vyladěn a určitě přidán grafický mód, počeštěny texty a zkratky kamenů. Ovládání zůstalo nezměněno, pouze přes klávesnici v nepohodlné "e2e4" notaci, dokonce bez možnosti mazání. Příkazové zkratky zůstaly v němčině! Umožňují editovat pozici, zobrazit legální tahy v pozici, nastavit obtížnost přes hloubkou hledání, vracet tahy(jednou mě to blblo). Attax ovládá branní mimochodem, ale neumí transformaci pěšce na něco jiného než dáma, remízové pravidlo o třikrát se opakující pozici ani o 50 tazích bez branní či tahu pěšce.


MaxRubin [DOS/EXE Quick Basic 7.1 (ExePack v 3.69)/114.872 b + 49 Kb/25.06.2000]

      Jedná se asi o nejpříjemnější(lepší než Attax) klon miniMAXu od Pavla Háse. Běží pod DOSem v grafickém režimu. Ovládá se klávesnicí, tahy lze zadávat pomocí šipek nebo "e2e4" notací. Kromě základních příkazů miniMaxu umí navíc nastavit obtížnost pomocí časového limitu, má změny v oceňovací fci, obsahuje malou knihovnu zahájení. MaxRubin ovládá branní mimochodem, transformaci pěšce na něco jiného než Dámu, ale neumí remízové pravidlo o třikrát se opakující pozici ani o 50 tazích bez branní či tahu pěšce.

Pokud najdete na stránce nějaké chyby, nebo víte o jiném nezahraničním amatérském šachovém programu tak mi napište na ogion(zavináč)centrum(tečka)cz, díky!