|
@@ -115,7 +115,16 @@ fn king_safety(game: &Game, side: Side) -> PosValue {
|
|
|
let guards = game.get_all_side(side) & area;
|
|
|
let attackers = game.get_all_side(!side) & area;
|
|
|
|
|
|
- guards.count_ones() as PosValue * 10 - attackers.count_ones() as PosValue * 35
|
|
|
+ let kneighbors = guards.count_ones() as PosValue * 5 - attackers.count_ones() as PosValue * 15;
|
|
|
+
|
|
|
+ let enemies = game.get_all_side(!side);
|
|
|
+ let kingrow = indices_from_square(square(king)).1;
|
|
|
+
|
|
|
+ let row_opponents = enemies & (ROW_1 << (kingrow * 8));
|
|
|
+ let dang_row_opponents = row_opponents & (ROW_1 | ROW_2 | ROW_7 | ROW_8);
|
|
|
+ let danger_value = (dang_row_opponents.count_ones() * 50) as PosValue;
|
|
|
+
|
|
|
+ return kneighbors + danger_value;
|
|
|
}
|
|
|
|
|
|
fn king_there(game: &Game, side: Side) -> PosValue {
|