evaluate
unknown
c_cpp
2 years ago
2.0 kB
6
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...