Portál AbcLinuxu, 30. dubna 2025 16:49
Čau lidi. Koukám, že vymýšlíte pěkný kraviny, abyste se navzájem nachytali. Já nikoho nachytat nechci, ale s kravinou přicházím taky...
Asi tejden zpátky jsem si zas po delší době vzpomněl na šachy, párkrát jsem dostal pekelnym způsobem na prdel, jelikož jsem znal pouze pravidla, ale nic víc. Tak jsem si sehnal nějaký knížky a poněkud mě to chytlo. Po chvíli jsem byl schopen (3x za sebou) porazit tátu, se kterým jsem naposledy hrál jako malej a kterýho jsem tenkrát nikdy neporazil. Pravda, není to moc silnej soupeř, ale známka zlepšení je evidentní.
Jelikož už jsem delší dobu nic nenaprogramoval, řekl jsem si, že by byla sranda zas něco začít, abych úplně nezakrněl, tak jsem oprášil svoje Qt4 znalosti a začal jsem řádit. Vývoj začal na Windows u přítelkyně, kde jsem naprogramoval jednoduchej board, doma jsem dodělal popisky os, zlepšil figury, přidal pár checků tahů ("teamkilly", kdo je na řadě, pěšci), rotace boardu a už se objevujou i počátky podpory šachové notace. Viz screenshot.
Vím, že existuje hafo vymazlenýho šachovýho software, ale to je mi vcelku jedno, pro mě je výzvou projektu detekce matu a patu. Milestone je pak kontrola tahů (zatím můžete hrát úplný kraviny, třeba brát dámu hned jako první tah ) a podpora tažení zadáním šachové notace (k tomu už se docela blížím). Patrně udělám i síťovej multiplayer (ale nevim jestli se k tomu někdy dostanu, abych pravdu řekl). Hráč bude mít možnost hrát třemi způsoby: drag&drop (to už jsem naprogramoval), source&dest. click a šachovou notací.
FAQ: AI? Ne, to psát nehodlám. Kdybych to někdy chtěl do programu integrovat, asi bych použil Crafty, to je hustodémonskej engine, kterej podle mě při správný konfiguraci musí vyklepnout (v nejhorším zpatit) hru s každým.
V současnosti je hra ve stavu "jo a ne" Vyjde to skoro na stejno jako když použijete fyzickou šachovnici – žádná kontrola tahů (kromě pěšců), atd. Ale aspoň vidíte historii tahů a kdo je na řadě... Hlavní problém je, že chybí podpora rošády,
proměny pěšců a braní mimochodem, ale vzhledem k aktuální anarchii celé hry to lze nějak obejít.
Jestli budete koukat na kód, tak ten taky berte s rezervou, chystám různý sjednocení věcí a podobně. Ale připomínkám se nebráním.
Takže tady je odkaz na Gitweb: http://git.watzke.cz/?p=sasek.git;a=summary. Takhle to můžete vyzkoušet:
git clone git://git.watzke.cz/sasek.git cd sasek qmake # nebo qmake-qt4 make # případně s -j3 (nebo víc) ./sasek
Tiskni
Sdílej:
Nazdárek, možná znáš, mě se líbí hraní na
FreeChess.org, člověk si tam zahraje v jakoukoliv denní dobu a přeci jen je to zábavnější než hraní s robotem. A pokud tam budeš hrát pravidelně, určitě brzy zaznamenáš další nárůst ELO.
GUI nakliká každej, (dobrou) umělou inteligenci jen ti nejlepší (a nejvytrvalejší).Je zbytečné programovat znovu engine. Crafty, GNU Chess a další jsou dostatečně dobré. Naopak dobrých GUI pro jejich použití v Linuxu moc není.
Naopak dobrých GUI pro jejich použití v Linuxu moc není.
Ještě aby! Cpát do jádra GUI pro hraní šachu, to jsou mi nápady...
No a co to teda umí, když to nemá ani kontrolu tahů nebo hru proti počítači? :)Zatím nic moc
(dobrou) umělou inteligenci jen ti nejlepší (a nejvytrvalejší).To je jasný.
Ono když se řekne "naprogramoval jsem šachy", tak to většinou znamená naprogramovat tu umělou inteligenci, ne jen GUI.No, nevím kdo určuje, co to znamená většinou, ale podstatný pro mě je se něco naučit nebo aspoň oprášit znalosti Qt4.
GUI nakliká každejVěř mi, že moc klikání se při vyvíjení projektu nekonalo. Kód má v tuhle chvíli ~600 řádků (resp. ~470 bez hlaviček).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.