Am realizat un applet care sa implementeze jocul de othello implementand strategiile descrise in sectiunile anterioare.
Jocul se desfasoara intre oponenti umani si oponenti AI. Oponentii AI au mai multe nivele, dupa cum urmeaza:
Nivelul -1 - este nivelul la care calculatorul joaca foarte prost (in sensul ca ajuta adversarul). Foloseste alfa-beta search pana
la o adancime de 3 half-plys, iar functia de evaluare este astfel construita incat sa ajute adversarul: calculatorul considera o
pozitie favorabila atunci cand adversarul are mai multe piese pe tabla.
Nivelul 0 - la acest nivel, calculatorul muta aleator. Am folosit acest nivel in cadrul dezvoltarii, pentru testarea celorlalte nivele.
Nivelul 1 - la acest nivel calculatorul foloseste alfa-beta search, cu o adancime de 3, si o functie de evaluare de complexitate constanta
dar destul de mare (12*64), folosind 6 parametrii pentru evaluarea tablei de joc. De asemenea, calculatorul foloseste si tehnica
"incremental depth", in sensul ca, pentru o pozitie considerata "periculoasa", adanceste cautarea in arbore pana la nivelul 5.
Nivelul 2 - are adancimea de cautare 5 si "incremental depth" pana la 7. Deoarece timpul de cautare creste, foloseste si o
varianta simplificata a functiei de evaluare de la nivelul 1.
Proiectul este alcatuit din urmatoarele surse java:
mothello.java - appletul principal al aplicatiei
Player.java - interfata implementata de ambele tipuri de jucatori: AI si uman
AIPlayer.java - jucatorul AI. Contine logica jucatorului AI
Evaluation.java - clasa care contine functiile de evaluare
gameBoard.java - canvas care contine tabla de joc; implementat ca un thread
HumanPlayer.java - jucatorul uman. Proceseaza mutarile operatorului
move.java - clasa care descrie o mutare
scorePane.java - clasa care contine afisare scorului si a istoricului de mutari
board.java - clasa care contine reprezentarea interna a tablei de joc