mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 17:16:33 +08:00
Assorted trivial cleanups 2/2019
No functional change.
This commit is contained in:
@@ -73,17 +73,6 @@ using namespace Trace;
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr Bitboard QueenSide = FileABB | FileBBB | FileCBB | FileDBB;
|
||||
constexpr Bitboard CenterFiles = FileCBB | FileDBB | FileEBB | FileFBB;
|
||||
constexpr Bitboard KingSide = FileEBB | FileFBB | FileGBB | FileHBB;
|
||||
constexpr Bitboard Center = (FileDBB | FileEBB) & (Rank4BB | Rank5BB);
|
||||
|
||||
constexpr Bitboard KingFlank[FILE_NB] = {
|
||||
QueenSide ^ FileDBB, QueenSide, QueenSide,
|
||||
CenterFiles, CenterFiles,
|
||||
KingSide, KingSide, KingSide ^ FileEBB
|
||||
};
|
||||
|
||||
// Threshold for lazy and space evaluation
|
||||
constexpr Value LazyThreshold = Value(1500);
|
||||
constexpr Value SpaceThreshold = Value(12222);
|
||||
@@ -152,6 +141,7 @@ namespace {
|
||||
constexpr Score KnightOnQueen = S( 16, 12);
|
||||
constexpr Score LongDiagonalBishop = S( 45, 0);
|
||||
constexpr Score MinorBehindPawn = S( 18, 3);
|
||||
constexpr Score Outpost = S( 9, 3);
|
||||
constexpr Score PawnlessFlank = S( 17, 95);
|
||||
constexpr Score RestrictedPiece = S( 7, 7);
|
||||
constexpr Score RookOnPawn = S( 10, 32);
|
||||
@@ -163,7 +153,6 @@ namespace {
|
||||
constexpr Score TrappedRook = S( 47, 4);
|
||||
constexpr Score WeakQueen = S( 49, 15);
|
||||
constexpr Score WeakUnopposedPawn = S( 12, 23);
|
||||
constexpr Score Outpost = S( 9, 3);
|
||||
|
||||
#undef S
|
||||
|
||||
@@ -402,7 +391,8 @@ namespace {
|
||||
constexpr Bitboard Camp = (Us == WHITE ? AllSquares ^ Rank6BB ^ Rank7BB ^ Rank8BB
|
||||
: AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB);
|
||||
|
||||
Bitboard weak, b, b1, b2, safe, unsafeChecks = 0;
|
||||
Bitboard weak, b1, b2, safe, unsafeChecks = 0;
|
||||
Bitboard rookChecks, queenChecks, bishopChecks, knightChecks;
|
||||
int kingDanger = 0;
|
||||
const Square ksq = pos.square<KING>(Us);
|
||||
|
||||
@@ -422,45 +412,43 @@ namespace {
|
||||
b2 = attacks_bb<BISHOP>(ksq, pos.pieces() ^ pos.pieces(Us, QUEEN));
|
||||
|
||||
// Enemy rooks checks
|
||||
Bitboard RookCheck = b1
|
||||
& safe
|
||||
& attackedBy[Them][ROOK];
|
||||
rookChecks = b1 & safe & attackedBy[Them][ROOK];
|
||||
|
||||
if (RookCheck)
|
||||
if (rookChecks)
|
||||
kingDanger += RookSafeCheck;
|
||||
else
|
||||
unsafeChecks |= b1 & attackedBy[Them][ROOK];
|
||||
|
||||
// Enemy queen safe checks: we count them only if they are from squares from
|
||||
// which we can't give a rook check, because rook checks are more valuable.
|
||||
Bitboard QueenCheck = (b1 | b2)
|
||||
& attackedBy[Them][QUEEN]
|
||||
& safe
|
||||
& ~attackedBy[Us][QUEEN]
|
||||
& ~RookCheck;
|
||||
queenChecks = (b1 | b2)
|
||||
& attackedBy[Them][QUEEN]
|
||||
& safe
|
||||
& ~attackedBy[Us][QUEEN]
|
||||
& ~rookChecks;
|
||||
|
||||
if (QueenCheck)
|
||||
if (queenChecks)
|
||||
kingDanger += QueenSafeCheck;
|
||||
|
||||
// Enemy bishops checks: we count them only if they are from squares from
|
||||
// which we can't give a queen check, because queen checks are more valuable.
|
||||
Bitboard BishopCheck = b2
|
||||
& attackedBy[Them][BISHOP]
|
||||
& safe
|
||||
& ~QueenCheck;
|
||||
bishopChecks = b2
|
||||
& attackedBy[Them][BISHOP]
|
||||
& safe
|
||||
& ~queenChecks;
|
||||
|
||||
if (BishopCheck)
|
||||
if (bishopChecks)
|
||||
kingDanger += BishopSafeCheck;
|
||||
else
|
||||
unsafeChecks |= b2 & attackedBy[Them][BISHOP];
|
||||
|
||||
// Enemy knights checks
|
||||
b = pos.attacks_from<KNIGHT>(ksq) & attackedBy[Them][KNIGHT];
|
||||
knightChecks = pos.attacks_from<KNIGHT>(ksq) & attackedBy[Them][KNIGHT];
|
||||
|
||||
if (b & safe)
|
||||
if (knightChecks & safe)
|
||||
kingDanger += KnightSafeCheck;
|
||||
else
|
||||
unsafeChecks |= b;
|
||||
unsafeChecks |= knightChecks;
|
||||
|
||||
// Unsafe or occupied checking squares will also be considered, as long as
|
||||
// the square is in the attacker's mobility area.
|
||||
@@ -511,7 +499,7 @@ namespace {
|
||||
constexpr Direction Up = (Us == WHITE ? NORTH : SOUTH);
|
||||
constexpr Bitboard TRank3BB = (Us == WHITE ? Rank3BB : Rank6BB);
|
||||
|
||||
Bitboard b, weak, defended, nonPawnEnemies, stronglyProtected, safe, restricted;
|
||||
Bitboard b, weak, defended, nonPawnEnemies, stronglyProtected, safe;
|
||||
Score score = SCORE_ZERO;
|
||||
|
||||
// Non-pawn enemies
|
||||
@@ -561,10 +549,11 @@ namespace {
|
||||
}
|
||||
|
||||
// Bonus for restricting their piece moves
|
||||
restricted = attackedBy[Them][ALL_PIECES]
|
||||
& ~stronglyProtected
|
||||
& attackedBy[Us][ALL_PIECES];
|
||||
score += RestrictedPiece * popcount(restricted);
|
||||
b = attackedBy[Them][ALL_PIECES]
|
||||
& ~stronglyProtected
|
||||
& attackedBy[Us][ALL_PIECES];
|
||||
|
||||
score += RestrictedPiece * popcount(b);
|
||||
|
||||
// Bonus for enemy unopposed weak pawns
|
||||
if (pos.pieces(Us, ROOK, QUEEN))
|
||||
@@ -901,7 +890,6 @@ std::string Eval::trace(const Position& pos) {
|
||||
<< " ------------+-------------+-------------+------------\n"
|
||||
<< " Material | " << Term(MATERIAL)
|
||||
<< " Imbalance | " << Term(IMBALANCE)
|
||||
<< " Initiative | " << Term(INITIATIVE)
|
||||
<< " Pawns | " << Term(PAWN)
|
||||
<< " Knights | " << Term(KNIGHT)
|
||||
<< " Bishops | " << Term(BISHOP)
|
||||
@@ -912,6 +900,7 @@ std::string Eval::trace(const Position& pos) {
|
||||
<< " Threats | " << Term(THREAT)
|
||||
<< " Passed | " << Term(PASSED)
|
||||
<< " Space | " << Term(SPACE)
|
||||
<< " Initiative | " << Term(INITIATIVE)
|
||||
<< " ------------+-------------+-------------+------------\n"
|
||||
<< " Total | " << Term(TOTAL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user