Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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();
- int sep = (int)Math.ceil(size/4);
- int poziom1 = sep;
- int poziom2 = sep*2;
- int poziom3 = sep*3;
- 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(i<poziom1)
- myRating+=1;
- else if(i<poziom2)
- myRating+=5;
- else if(i<poziom3)
- myRating+=10;
- else
- myRating+=20;
- if( i+2 < size) { //bicie do przodu
- if( j+2 < size ) { // bicie w lewo
- if( !board._board[i+1][j+1].empty && board._board[i+1][j+1].white!=getColor() ) { //nie puste pole i pionek przeciwnika
- if( board._board[i+2][j+2].empty ) //puste pole, możliwe bycie
- myRating+=30;
- }
- }
- if( j-2 < size ) { // bicie w prawo
- if( !board._board[i+1][j-1].empty && board._board[i+1][j-1].white!=getColor() ) { //nie puste pole i pionek przeciwnika
- if( board._board[i+2][j-2].empty ) //puste pole, możliwe bycie
- myRating+=30;
- }
- }
- }
- if (board._board[i][j].king) myRating+=30; // to jest moja damka
- else myRating+=1 ; // to jest moj pionek
- }
- else
- {
- if(i<poziom1)
- opponentsRating+=20;
- else if(i<poziom2)
- opponentsRating+=10;
- else if(i<poziom3)
- opponentsRating+=5;
- else
- opponentsRating+=1;
- if( i-2 < size) { //bicie do przodu
- if( j+2 < size ) { // bicie w lewo
- if( !board._board[i-1][j+1].empty && board._board[i-1][j+1].white==getColor() ) { //nie puste pole i moj pionek
- if( board._board[i-2][j+2].empty ) //puste pole, możliwe bycie
- opponentsRating+=30;
- }
- }
- if( j-2 < size ) { // bicie w prawo
- if( !board._board[i-1][j-1].empty && board._board[i+1][j-1].white==getColor() ) { //nie puste pole i moj pionek
- if( board._board[i-2][j-2].empty ) //puste pole, możliwe bycie
- opponentsRating+=30;
- }
- }
- }
- if (board._board[i][j].king) opponentsRating+=30; // 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement