Projekt TorqChess
Pierwsze programy szachowe i pierwsze techniki pisania programów szachowych
pojawiły się praktycznie wraz z pierwszymi komputerami. To bodaj von Neumann jako
pierwszy sformułował zasadę, która mówi, że aby grać w szachy maszyna powinna przeszukiwać
wszystkie możliwe ruchy, wszystkie możliwe odpowiedzi przeciwnika na nie, itd.
Z punktu widzenia złożoności obliczeniowej szachy są grą dość trudną. Ilość
wszystkich możliwych pozycji szacuje się na ok. 10120 (dla porównania : warcaby ok.
1040, go ok 10760). Przeszukanie całego drzewa jest więc niemożliwe.
Projekt TorqChess, który rozpocząłem w sierpniu 2001, ma na celu stworzenie rozsądnie
grającego programu szachowego. Ponieważ projekt realizowany jest z boku jakiejkolwiek
działalności naukowej czy komercyjnej, więc za interpretację określenia 'rozsądnie'
przyjąłem 'co najmniej tak dobrze, żebym sam przegrywał z nim w
większości partii'. Postanowiłem nie wzorować się na istniejących kodach źródłowych
(chociażby GNU Chess), aby nie przywiązywać się do już
ugruntowanych rozwiązań programistycznych.
W wersji 0.01 alpha, która jest pierwszą wersją publiczną, TorqChess:
- napisany jest w całości w C++, kompilowany jest przy pomocy darmowego kompilatora Dev-C++
- jest projektem niekomercyjnym, przeznaczonym do bezpłatnego rozpowszechniania
- analizuje drzewo pozycji do głębokości 5 (czyli 2.5 posunięcia, to akurat nie
jest zbyt szczęśliwe)
- zawiera bardzo małą księgę otwarć
- korzysta z 20-bitowej tablicy transpozycji
- wykorzystuje iteracyjnie pogłębianiego alpha-beta (iterative deepening alpha-beta)
aby znaleźć najlepsze posunięcie
- analizuje ok. 8000-12000 pozycji na sekundę na AMD K6-2 450MHz
W kolejnych wersjach (jeśli powstaną) planowane jest:
- zwiększenie siły gry (MTD(f) na wierzchu algorytmu alpha-beta)
- dodanie możliwości zapisu i oczytu stanu gry, możliwość cofania ruchów
- możliwość defniowania pozycji bierek i szukania ruchów prowadzących do mata
TorqChess v.0.01 alpha
Zdecydowałem się udostępnić kod źródłowy programu TorqChess. Być może lepiej spełni swoje zadanie,
jeśli pomoże komuś nauczyć się jak napisać prosty program szachowy.
Jeśli komuś ten kod na coś się przyda, chce o coś zapytać, coś podpowiedzieć lub zasugerować lub
wprowadzić jakieś zmiany do programu: proszę o kontakt.
Program był kompilowany przy pomocy Dev-C++ 4.1. Powinien dać się skompilować każdym kompilatorem
języka C++, wspierającym programowanie Win32API.
I have decided to make the TorqChess source code avaliable to the public. I hope it will help someone
to learn how to write a simple Chess playing program.
If you use it for any purpose and you would like to ask for something, suggest something or
to make any changes to the code, feel free to contact me.
The code was compiled with Dev-C++ 4.1. You should be able to compile it with any C++ compiler that
supports Win32API.
Pobierz kod źródłowy programu / Download the source
Literatura:
Francois Dominic Laramee - Chess Programming, {www.gamedev.net}
Stanisław Kacprzak - W krainie szachów
Charles Petzold - Programming Windows