Zadanie polega na implementacji gry Czwórki (Connect 4) i grającego w
nią algorytmu min-man/alfa-beta z funkcją heurystyczną. Program
powinien umożliwić grę człowieka z komputerem. Przed grą użytkownik
powinien móc wybrać która strona zaczyna. Program powinien także
pozwolić graczowi wykonać zamiast własnego ruchu ruch wyliczony przez
algorytm (tzn. żeby w efekcie komputer mógł grać sam z sobą).
Program musi wyświetlać planszę gry i pozwalać wykonywać ruchy tylko
poprawne. Może być napisany w dowolnym języku i dozwolone są dowolne
biblioteki do wyświetlania. Implementacja interfejsu nie podlega
ocenie. Podstawą oceny będzie jedynie jakość gry zaimplementowanej za
pomocą funkcji heurystycznej. Ruch komputera powinien być wykonywany
w rozsądnym czasie (co najwyżej 1-2 sekundy).
Uwaga: program musi mieć randomizację; tzn. jeśli strategia (funkcja
heurystyczna) wskazuje więcej niż jeden ruch jako równie optymalny, z
identyczną wartością funkcji oceny, to ruch należy wybrać spośród tych
równoważnych alternatyw losowo. Proszę zadbać o poprawne
zaimplementowanie tej losowości (przetestować). Losowość jest ważna,
ponieważ jeśli program ma kilka dobrych ruchów do wyboru, i wie o tym,
ale konsekwentnie ogranicza się, i wybiera jeden (zawsze ten sam), to
jego strategia jest bardziej przewidywalna i słabsza. Grając
naprzeciw gracza uczącego się, dajemy mu większe szanse wyuczenia się
skutecznej strategii przeciwko nam. W tym zadaniu randomizacja jest
potrzebna jeszcze w jednym celu -- aby bardziej sensownie
przeprowadzić testowanie.
W celu oceny otrzymanych wyników, naszą implementację będziemy
porównywać do implementacji z sieci (patrz niżej), nasz program nie
powinien przegrywać na poziomie beginner! Do rozwiązania należy
dołączyć wynik przeprowadzonych testów --- czyli wyniki
(wygrana/przegrana/remis) dla 5 gier rozegranych na poziomach Easy,
Medium i Hard (w sumie 15 rozgrywek) gdzie nasz program rozpoczyna
grę. Oczekujemy że program będzie wygrywał przynajmniej na poziomie
trudności Easy.
Opis gry: http://pl.wikipedia.org/wiki/Czw%C3%B3rki
Więcej informacji: http://en.wikipedia.org/wiki/Connect_Four
Implementacja online: http://www.mathsisfun.com/games/connect4.html