Go-Moku
Zasady gry
Gra rozgrywana jest na planszy 15x15 pól. W grze mogą brać
udział dwie osoby. Jedna ma białe, druga czarne kamienie, bądź jedna ma
krzyżyki, a druga kółka. Umownie nazywać je będziemy kamieniami. Celem gry jest
ułożenie na planszy pięciu kamieni swojego koloru w ciągłej linii, poziomo,
pionowo, bądź na ukos. Pierwszy gracz, który tego dokona, zostaje zwycięzcą;
jeśli nie uda się to nikomu (plansza zostanie zapełniona), następuje remis.
Istotne problemy w pisaniu programu dla gier
- Jako
strategię przeszukiwania użyjmy strategii minimax z odcięciem alfa-beta.
- Należy
napisać dobrą i efektywną funkcję oceniającą stany. Dla tego celu
potrzebne są dobre struktury danych i dobry sposób oceniający. Np. jeśli
wykonujemy ruch i dostajemy nowy stan, to ocena tego nowego stanu może być
obliczona na podstawie oceny poprzedniego stanu.
- Należy
napisać dobrą i efektywną funkcję zwracającą sensowne ruchy dla danego
stanu. Aby powiększyć efektywność programu, trzeba zastanowić się jakie
ruchy są uznane za sensowne i jaki limit możemy przyjąć na ilość takich
ruchów. Trzeba zwrócić uwagę na początkowe ruchy i ruchy broniące:
komputer nie wolno długo pomyśleć na początku kiedy jeszcze nie ma nic na
planszy; a kiedy konieczna jest obrona, trzeba zwrócić ten jedyny ruch
broniący. Aby było najwięcej korzyści z alfa-beta, należy uporządkować
ruchy malejąco względem ich ocen.
Zadanie (wymagane)
Umieszczam tu dwa programy dla Go-Moku, jeden jest napisany
w prolog’u (gomoku5.pl)
a drugi w C++ (gomoku.tgz).
Należy wybrać jeden z nich do ulepszenia zgodnie z w/w kryteriami. Ulepszony
program proszę wysłać do nguyen@mimuw.edu.pl do 12/04/2005.