evaluate
unknown
c_cpp
3 years ago
2.0 kB
9
Indexable
int State::evaluate(){
// [TODO] design your own evaluation function
auto first_board = this->board.board[0];
auto second_board = this->board.board[1];
int now_value = 0, oppn_value = 0;
int now_piece, oppn_piece;
for(int i = 0; i < BOARD_H; i++){
for(int j = 0; j < BOARD_W; j++){
if((now_piece = first_board[i][j])){
int tmp_val = 0;
switch (now_piece){
case 1: //pawn
now_value += 1;
tmp_val = 1;
break;
case 2: //rook
now_value += 5;
tmp_val = 5;
break;
case 3: //knight
now_value += 3;
tmp_val = 3;
break;
case 4: //bishop
now_value += 3;
tmp_val = 3;
break;
case 5: //queen
now_value += 9;
tmp_val = 9;
break;
case 6: //king
now_value += 1000;
break;
default:
break;
}
}
}
}
for(int i = 0; i < BOARD_H; i++){
for(int j = 0; j < BOARD_W; j++){
if((oppn_piece = second_board[i][j])){
int tmp_val = 0;
// std::cout << this->player << "," << now_piece << ' ';
switch (oppn_piece){
case 1: //pawn
oppn_value -= 1;
tmp_val = 1;
break;
case 2: //rook
oppn_value -= 5;
tmp_val = 5;
break;
case 3: //knight
oppn_value -= 3;
tmp_val = 3;
break;
case 4: //bishop
oppn_value -= 3;
tmp_val = 3;
break;
case 5: //queen
oppn_value -= 9;
tmp_val = 9;
break;
case 6: //king
oppn_value -= 1000;
break;
}
}
}
}
return now_value - oppn_value;
}Editor is loading...