X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=ceacca82d53b8932fe8526fbbfdc97116ba3992e;hp=a031534d3a4fd9b75d44e8c69ac97f99d8ef9c28;hb=2e11388581aca5232b54437a4338012bcf7a5ff7;hpb=2acda1fde3e1542a0b1bfc5a0885559e6daf142a diff --git a/src/pawns.cpp b/src/pawns.cpp index a031534d..ceacca82 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -2,7 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad - Copyright (C) 2015-2017 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,12 +43,6 @@ namespace { // Doubled pawn penalty const Score Doubled = S(18, 38); - // Lever bonus by rank - const Score Lever[RANK_NB] = { - S( 0, 0), S( 0, 0), S(0, 0), S(0, 0), - S(17, 16), S(33, 32), S(0, 0), S(0, 0) - }; - // Weakness of our pawn shelter in front of the king by [isKingFile][distance from edge][rank]. // RANK_1 = 0 is used for files where we have no pawns or our pawn is behind our king. const Value ShelterWeakness[][int(FILE_NB) / 2][RANK_NB] = { @@ -94,10 +88,10 @@ namespace { template Score evaluate(const Position& pos, Pawns::Entry* e) { - const Color Them = (Us == WHITE ? BLACK : WHITE); - const Square Up = (Us == WHITE ? NORTH : SOUTH); - const Square Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); - const Square Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); + const Color Them = (Us == WHITE ? BLACK : WHITE); + const Direction Up = (Us == WHITE ? NORTH : SOUTH); + const Direction Right = (Us == WHITE ? NORTH_EAST : SOUTH_WEST); + const Direction Left = (Us == WHITE ? NORTH_WEST : SOUTH_EAST); Bitboard b, neighbours, stoppers, doubled, supported, phalanx; Bitboard lever, leverPush; @@ -184,9 +178,6 @@ namespace { if (doubled && !supported) score -= Doubled; - - if (lever) - score += Lever[relative_rank(Us, s)]; } return score; @@ -254,7 +245,7 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { Value safety = MaxSafetyBonus; File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); - for (File f = center - File(1); f <= center + File(1); ++f) + for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); Rank rkUs = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1; @@ -262,7 +253,7 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { b = theirPawns & file_bb(f); Rank rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1; - int d = std::min(f, FILE_H - f); + int d = std::min(f, ~f); safety -= ShelterWeakness[f == file_of(ksq)][d][rkUs] + StormDanger [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing :