Warcaby angielskie - środowisko badania heurystyk

API funkcji oceny


Implementacja heurystycznej funkcji oceny powinna być napisana w języku Java i zgodna z poniższym przykładem:


package checkers; // Ten pakiet jest wymagany - nie usuwaj go
public class EvaluatePosition // Ta klasa jest wymagana - nie usuwaj jej
{
    static private final int WIN=Integer.MAX_VALUE/2;
    static private final int LOSE=Integer.MIN_VALUE/2;
    static private boolean _color// To pole jest wymagane - nie usuwaj go
    static public void changeColor(boolean color) // Ta metoda jest wymagana - nie zmieniaj jej
    {
        _color=color;
    }
    static public boolean getColor() // Ta metoda jest wymagana - nie zmieniaj jej
    {
        return _color;
    }
    static public int evaluatePosition(AIBoard board) // Ta metoda jest wymagana. Jest to główna metoda heurystyki - umieść swój kod tutaj
    {
        int myRating=0;
        int opponentsRating=0;
        int size=board.getSize();
        for (int i=0;i<size;i++)
        {
            for (int j=(i+1)%2;j<size;j+=2)
            {
                if (!board._board[i][j].empty// pole nie jest puste
                {
                    if (board._board[i][j].white==getColor()) // to jest moj pionek
                    {
                        if (board._board[i][j].king) myRating+=5; // to jest moja damka
                        else myRating+=1; // to jest moj pionek
                    }
                    else
                    {
                        if (board._board[i][j].king) opponentsRating+=5; // to jest damka przeciwnika
                        else opponentsRating+=1;
                    }
                }
            }
        }
        //Judge.updateLog("Tutaj wpisz swoją wiadomość - zobaczysz ją w oknie log\n");
        if (myRating==0) return LOSE; // przegrana
        else if (opponentsRating==0) return WIN; // wygrana
        else return myRating-opponentsRating;
    }
}


Wymagane pola - objaśnienia

static private boolean_color;

UWAGA! Tego pola nie należy w żaden sposób modyfikować!

Pole przechowuje informację, które pionki należą do gracza bieżącego. Możliwe wartości:


Wymagane metody - objaśnienia

void changeColor(boolean color)

UWAGA! Tej metody nie należy używać, ani w żaden sposób modyfikować!

Metoda pozwala na zdefiniowaniowanie, które pionki gracz bieżący ma uważać za swoje. Jeżeli jako argument metoda przyjmie wartość:


boolean getColor()

UWAGA! Tej metody nie należy w żaden sposób modyfikować!

Metoda określa, które pionki należą do gracza bieżącego. Wartości zwracane:


int evaluatePosition(AIBoard board)

UWAGA! To jest główna metoda heurystyki! Nie należy jej usuwać ale można modyfikować jej ciało.

Metoda pozwala na ocenę stanu planszy.
Metoda jako argument przyjmuje planszę do oceny typu AIBoard
Metoda zwraca wartość int funkcji ewaluacji dla danej planszy.


Inne wymagane linie - objaśnienia

package checkers;

UWAGA! Tego pakietu nie należy usuwać!

Pakiet zawiera implementacje niezbędnych klas do poprawnego działania funkcji ewaluacji.


public class EvaluatePosition

UWAGA! Nazwa i modyfikatory klasy są wymagane do poprawnego działania - nie należy ich w żaden sposób modyfikować!

Klasa zawiera implementację wszelkich metod i pól niezbędnych dla poprawnego działania funkcji heurystycznej. Można modyfikować i rozszerzać jej ciało z uwzględnieniem warunków na wyżej wymienione metody i pola.


Dodatkowe uwagi

Przy pisaniu własnej implementacji funkcji heurystycznej należy pamiętać o niżej wymienionych ograniczeniach: Dozwolone jest wzbogacanie implementacji o dodatkowe metody, pola oraz klasy.

Klasa AIBoard

Przechowuje reprezentację planszy: jej rozmiar, informację do którego z graczy należy ruch i rozmieszczenie pionków.

Dostępne pola - objaśnienia

Piece [][] _board

Tablica dwuwymiarowa przechowująca reprezentacje pionków (klasa Piece) na planszy. Tablica jest określona pomiędzy komórkami [0][0] (lewy górny róg planszy), a [getSize()][getSize()] (prawy dolny róg planszy), z pominięciem komórek, które odpowiadają nieaktywnym polom planszy.


Dostępne metody - objaśnienia

boolean getMovesWhite()

Metoda określa, do którego z graczy należy ruch.


int getSize()

Metoda zwraca wartość int określającą długość boku blanszy.


Klasa Piece

Przechowuje reprezentację pionka: informację czy istnieje, jakiego jest koloru oraz czy jest damką.

Dostępne pola - objaśnienia

boolean empty;

Pole określa czy dany pionek istnieje na planszy. Jeżeli przyjmuje wartość:


boolean king;

Pole określa czy dany pionek jest damką. Jeżeli przyjmuje wartość:


boolean white;

Pole określa do którego z graczy należy pionek. Jeżeli przyjmuje wartość: