Skip to content

Commit

Permalink
Prefer names to numbers in storm code
Browse files Browse the repository at this point in the history
Also replaces some tabs with spaces and
change StormDanger order to reflect
ShelterWeakness one.

No functional change.
  • Loading branch information
mcostalba committed Dec 22, 2014
1 parent e5c7b44 commit 296534f
Showing 1 changed file with 23 additions and 23 deletions.
46 changes: 23 additions & 23 deletions src/pawns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,32 +60,31 @@ namespace {
// Unsupported pawn penalty
const Score UnsupportedPawnPenalty = S(20, 10);

// Weakness of our pawn shelter in front of the king indexed by [file pairs (a/h,b/g,c/f,d/e)][rank]
// Weakness of our pawn shelter in front of the king by [distance from edge][rank]
const Value ShelterWeakness[][RANK_NB] = {
{ V(101), V(10), V(24), V(68), V(90), V( 95), V(102) },
{ V(105), V( 1), V(30), V(76), V(95), V(100), V(105) },
{ V( 99), V( 0), V(32), V(72), V(92), V(101), V(100) },
{ V( 94), V( 1), V(31), V(68), V(89), V( 98), V(106) } };

// Danger of enemy pawns moving toward our king indexed by
// [file pairs (a/h,b/g,c/f,d/e)][no friendly pawn | pawn unblocked | pawn blocked by pawn| pawn blocked by king][rank of enemy pawn]
// Danger of enemy pawns moving toward our king by [type][distance from edge][rank]
const Value StormDanger[][4][RANK_NB] = {
{ { V( 0), V( 61), V( 128), V(47), V(27) },
{ V(25), V( 33), V( 95), V(39), V(21) },
{ V( 0), V( 0), V( 80), V(14), V( 8) },
{ V( 0), V(-300), V(-300), V(54), V(23) } },
{ { V( 0), V( 66), V( 131), V(49), V(27) },
{ V( 0), V( 66), V( 131), V(49), V(27) },
{ V( 0), V( 62), V( 126), V(52), V(23) },
{ V( 0), V( 63), V( 128), V(52), V(26) } },
{ { V(25), V( 33), V( 95), V(39), V(21) },
{ V(24), V( 33), V( 97), V(42), V(22) },
{ V( 0), V( 0), V( 163), V(28), V(12) },
{ V( 0), V( 67), V( 128), V(46), V(24) } },
{ { V( 0), V( 62), V( 126), V(52), V(23) },
{ V(24), V( 33), V( 93), V(35), V(23) },
{ V(26), V( 27), V( 96), V(37), V(22) } },
{ { V( 0), V( 0), V( 80), V(14), V( 8) },
{ V( 0), V( 0), V( 163), V(28), V(12) },
{ V( 0), V( 0), V( 163), V(25), V(15) },
{ V( 0), V( 64), V( 130), V(50), V(29) } },
{ { V( 0), V( 63), V( 128), V(52), V(26) },
{ V(26), V( 27), V( 96), V(37), V(22) },
{ V( 0), V( 0), V( 161), V(24), V(14) },
{ V( 0), V( 63), V( 127), V(51), V(24) } } };
{ V( 0), V( 0), V( 161), V(24), V(14) } },
{ { V( 0), V(-300), V(-300), V(54), V(23) },
{ V( 0), V( 67), V( 128), V(46), V(24) },
{ V( 0), V( 64), V( 130), V(50), V(29) },
{ V( 0), V( 63), V( 127), V(51), V(24) } } };

// Max bonus for king safety. Corresponds to start position with all the pawns
// in front of the king and no enemy pawn on the horizon.
Expand Down Expand Up @@ -247,13 +246,15 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) {

const Color Them = (Us == WHITE ? BLACK : WHITE);

enum { NoFriendlyPawn, Unblocked, BlockedByPawn, BlockedByKing };

Bitboard b = pos.pieces(PAWN) & (in_front_bb(Us, rank_of(ksq)) | rank_bb(ksq));
Bitboard ourPawns = b & pos.pieces(Us);
Bitboard theirPawns = b & pos.pieces(Them);
Value safety = MaxSafetyBonus;
File kf = std::max(FILE_B, std::min(FILE_G, file_of(ksq)));
File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq)));

for (File f = kf - File(1); f <= kf + File(1); ++f)
for (File f = center - File(1); f <= center + File(1); ++f)
{
b = ourPawns & file_bb(f);
Rank rkUs = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1;
Expand All @@ -262,12 +263,11 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) {
Rank rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1;

safety -= ShelterWeakness[std::min(f, FILE_H - f)][rkUs]
+ StormDanger[std::min(f, FILE_H - f)]
[file_of(ksq) == f && relative_rank(Us, ksq) == rkThem - 1 ? 3 :
rkUs == RANK_1 ? 0 :
rkThem != rkUs + 1 ? 1 :
/* pawn blocked by pawn */ 2 ]
[rkThem];
+ StormDanger
[f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing :
rkUs == RANK_1 ? NoFriendlyPawn :
rkThem == rkUs + 1 ? BlockedByPawn : Unblocked]
[std::min(f, FILE_H - f)][rkThem];
}

return safety;
Expand Down

0 comments on commit 296534f

Please sign in to comment.