Another bug fix, added pawn rank weight bonus
This commit is contained in:
parent
204cac3174
commit
6ed4f41803
|
@ -580,7 +580,6 @@ std::vector<int> Board::get_moves_for_space(int x, int y, bool check_for_check)
|
||||||
game_board[7][y] = king_piece;
|
game_board[7][y] = king_piece;
|
||||||
game_board[x][y] = rook_piece;
|
game_board[x][y] = rook_piece;
|
||||||
|
|
||||||
if (!is_check(game_board[x][y].get_team()))
|
|
||||||
out_spaces.push_back(7+y*BOARD_SIZE);
|
out_spaces.push_back(7+y*BOARD_SIZE);
|
||||||
|
|
||||||
game_board[7][y] = rook_piece;
|
game_board[7][y] = rook_piece;
|
||||||
|
@ -596,7 +595,6 @@ std::vector<int> Board::get_moves_for_space(int x, int y, bool check_for_check)
|
||||||
game_board[0][y] = king_piece;
|
game_board[0][y] = king_piece;
|
||||||
game_board[x][y] = rook_piece;
|
game_board[x][y] = rook_piece;
|
||||||
|
|
||||||
if (!is_check(game_board[x][y].get_team()))
|
|
||||||
out_spaces.push_back(y*BOARD_SIZE);
|
out_spaces.push_back(y*BOARD_SIZE);
|
||||||
|
|
||||||
game_board[0][y] = rook_piece;
|
game_board[0][y] = rook_piece;
|
||||||
|
|
19
game.cpp
19
game.cpp
|
@ -378,11 +378,6 @@ int Game::board_heuristic(Board current_board)
|
||||||
int heuristic = 0;
|
int heuristic = 0;
|
||||||
int piece_weights[2][7] = {{-900, -90, -30, -30, -50, -10, 0}, {900, 90, 30, 30, 50, 10, 0}};
|
int piece_weights[2][7] = {{-900, -90, -30, -30, -50, -10, 0}, {900, 90, 30, 30, 50, 10, 0}};
|
||||||
|
|
||||||
///Calculate the weight of an unknown piece for both teams
|
|
||||||
//The weight of an unknown piece is 2 times the average of the remaining unrevealed pieces
|
|
||||||
//The weight is 2 times so that the AI understands that the hidden pieces are valuable hidden, otherwise the average
|
|
||||||
//is less than that of Rooks, making the AI always reveal its rooks.
|
|
||||||
//In order to still sometimes prefer revealing, the number of vulnerabilities will be considered later into a pieces weight.
|
|
||||||
int unknown_white_count = 0;
|
int unknown_white_count = 0;
|
||||||
int unknown_black_count = 0;
|
int unknown_black_count = 0;
|
||||||
for(int x = 0; x < BOARD_SIZE; x++)
|
for(int x = 0; x < BOARD_SIZE; x++)
|
||||||
|
@ -439,6 +434,18 @@ int Game::board_heuristic(Board current_board)
|
||||||
|
|
||||||
int adden = piece_weights[cur_piece.get_team()][cur_piece.get_type()];
|
int adden = piece_weights[cur_piece.get_team()][cur_piece.get_type()];
|
||||||
|
|
||||||
|
if (cur_piece.get_type() == PAWN)
|
||||||
|
{
|
||||||
|
if (cur_piece.get_team() == WHITE)
|
||||||
|
{
|
||||||
|
adden -= 2*(6-y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
adden += 2*(y-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int found_attackers = current_board.get_attackers_for_space(x+y*BOARD_SIZE);
|
int found_attackers = current_board.get_attackers_for_space(x+y*BOARD_SIZE);
|
||||||
|
|
||||||
if (found_attackers > 0)
|
if (found_attackers > 0)
|
||||||
|
@ -447,7 +454,7 @@ int Game::board_heuristic(Board current_board)
|
||||||
}
|
}
|
||||||
else if (found_attackers < 0)
|
else if (found_attackers < 0)
|
||||||
{
|
{
|
||||||
adden = 5*adden/4;
|
adden = 4*adden/3;
|
||||||
}
|
}
|
||||||
|
|
||||||
heuristic += adden;
|
heuristic += adden;
|
||||||
|
|
Loading…
Reference in New Issue