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