12. 2. 2015

Ke2f3 ?? - illegal move !


Hra kráľov. Ako malé, sopľavé a negramotné decko som doma vkuse zakopával o šachovnice všetkých veľkosti a tvarov /vrátane zrolovateľnej, magnetickej alebo tej snobskej so zeleným semišom na spodku figúrok/. Zatiaľ mi však musela ako náhrada stačiť Dáma alebo Skákaná. Pravidlá šachu a celá tá bezbrehá komplexnosť bola pre mňa príliš zložitá. Naučil som sa však čítať a narazil na skutočne fascinujúce knížky písané aj svetovými šachovými veľmajstrami rozoberajúcimi najslávnejšie šachové bitky za posledných 100 rokov, tiež tajomstvá, finty, popisy taktík /španielske otvorenie, sicílska obrana, Marshallov útok, všemožné varianty/ a extra kapitoly pre blbov a začiatočníkov. Ešte o niečo neskôr som skúšal šťastie aj na malých školských turnajoch. Potom na jedny vianoce sa objavilo pod stromčekom 8 bitové ZX Spectrum 48K.

Sinclair platforma ponúkala viac šachových programov ako PC FPS hier za posledných 20 rokov. Vyberme si ten najlepší. Colossus Chess v4.2. Súboj s AI. Videl som to v celkom jasným farbách - rozdrvím tu prašivinu napadrť. To som však ešte ja chudák netušil, že program hladko porazil konkurenčné a vynikajúce šachy SuperChess v3.5 a Cyrus IS Chess alias Cyrus 1981 European Champion a ELO/BCF rating speccy kolosa je v kategórií 1850/156+. A len tak mimochodom ráta priemerne 170 pozícií za sekundu. Ide o fantasticky naprogramovanú vecičku podporujúcu základné aj úplné pravidlá, teda okrem prkotín ako malá a veľká rošáda alebo branie mimochodom aj tzv. /tri/ opakujúce sa pozície, pravidlo päťdesiatich ťahov, či nedostatok materiálu /figúr/. A mnoho, mnoho ďalšieho. Ak od neho dostávate na prdel, možno selektívne zvyšovať blbosť kódu /skrátite mu čas na rozmýšľanie, zakážete použitie prvého najlepšieho ťahu či hlbkovú analýzy hry/. Úplní zufalci si zapnú nápovedu najlepšieho ďalšieho kroku, možnosť jeho vrátenia nazad alebo hnusné podvádzanie, čumenie "do kariet" AI súpera a sledovania jeho budúcich možných ťahov. Dokonalosť v 40 kilobajtoch, ak uhraje bežný hráč aspoň tu remízku je borec.

"history's greatest game programming feat" - "the greatest program ever written" -
"the program is nevertheless a fantastic technical achievement", wiki

Pred Spektrom tu však boli omnoho slabšie a hardvérovo horšie vybavené mašinky. Ako by si tieto poradili so šachom. Video Chess /1978/ pre Atari 2600 s 128 bajtovou pracovnou RAM a 4KB kártridžom alebo 1K ZX Chess /1982/ pre ZX81 s 1KB pracovnou RAM. Ten prvý menovaný mal 8 úrovní obtiažnosti, pri tej najvyššej ste na jeho ťah čakali aj vyše 10 hodín /!!/. CPU MOS Technology 6507 na 1.19 MHz. Ten druhý zas až do dneška držal svetový rekord vo veľkosti kódu, do ktorého je možné napchať funkčný šach. Má hodnotu 672 bajtov. Je to nepredstaviteľné malé číslo a napriek tejto epicky bezvýznamnej veľkosti si vás stále trúfa poraziť - "Six levels of ZX81 ability: level 2 will probably beat you !"

Bradatý 33 ročný rekord ZX81ky však bol pre pár dňami prekonaný a kóder Baudsurfer /šikovný chlapík - viď aj jeho interaktívne 128 bajtové Wolfenstein demo/ to v "šachu" s názvom BootChess natlačil do prťavých 487 bajtov /Windows, Linux, OS X, DOS, BSD/. Slovo šach som bohužiaľ musel dať do úvodzoviek lebo kód hry nespĺňa kritéria dôrazného dodržiavania základných pravidiel. Jeden príklad za všetky - figúrka kráľa môže behať aj po poliach, na ktorých dostáva šach /viď titulka článku, ?? je v šachu označenie pre výsostne pochybný ťah, hrubý omyl alebo "ilegála"/. Je to teda zakázaný pohyb a nájde sa toho oveľa viac. Samotná AI je v pásme úplnej idiocie a definitívne dostávate šancu nejakú partiu aj vyhrať aj keď viete len to, že kôň skáče do "elka" a netušíte ako správne urobiť rošádu /BootChess to aj tak nepodporuje/. Ponúkam vám však jeho online verziu /Virtual PC/, tak skúste štastie a hlavne si prečítajte priložené komentované texťáky ako to ten borec dokázal - skvelé čítanie.

BootChess - škaredý, blbý a nehrajem podľa pravidiel

Koncovka. Z môjho pohľadu je rekord 1K ZX81 Chess stále neprekonaný, do menej ako 672 bajtov sa zatiaľ nikomu nepodarilo nakódovať šach s platnými pravidlami a s AI /ELO/ aspoň na úrovni bežného kazuála. Rád by som aj pripomenul, že ZX81 ma ďaleko menej flexibilnejšie inštrukcie, menej registrov, úbohejšie indexované návestie, žiadne DMA a oproti "PC" 80x86 prostrediu a na tú istú prácu vyžaduje o pár bajtov práce a priestoru naviac. Do budúcnosti by som rád videl serióznejšie pokusy /už sa totiž objavili modifikácie Bootchess, ktoré ho dostanú pod 400 bajtov/ a hlavne bratrovražedné súboje dvoch takýchto mini programov medzi sebou, tak ako sa to robilo v časoch ZX 48K. Ako prvý inak ťahá figúrkami hráč s bielymi kameňmi, viem že vám odpoveď na túto otázku od začiatku vŕta v hlave.