X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=edd670b84cc4ec3021fdcd2b3962bbd419cfdc88;hp=ea0dffc72ba34c738537cedd18f6e3797540407c;hb=ae5d2c38e1b9f6a990c29d31a37d6555d197f939;hpb=d2274e609c28e46a24deee55b05684197d369976 diff --git a/src/pawns.cpp b/src/pawns.cpp index ea0dffc7..edd670b8 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-2018 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad + Copyright (C) 2015-2019 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 @@ -67,7 +67,7 @@ namespace { constexpr Color Them = (Us == WHITE ? BLACK : WHITE); constexpr Direction Up = (Us == WHITE ? NORTH : SOUTH); - Bitboard b, neighbours, stoppers, doubled, supported, phalanx; + Bitboard b, neighbours, stoppers, doubled, support, phalanx; Bitboard lever, leverPush; Square s; bool opposed, backward; @@ -102,7 +102,7 @@ namespace { doubled = ourPawns & (s - Up); neighbours = ourPawns & adjacent_files_bb(f); phalanx = neighbours & rank_bb(s); - supported = neighbours & rank_bb(s - Up); + support = neighbours & rank_bb(s - Up); // A pawn is backward when it is behind all pawns of the same color // on the adjacent files and cannot be safely advanced. @@ -114,22 +114,22 @@ namespace { // which could become passed after one or two pawn pushes when are // not attacked more times than defended. if ( !(stoppers ^ lever ^ leverPush) - && popcount(supported) >= popcount(lever) - 1 + && popcount(support) >= popcount(lever) - 1 && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; else if ( stoppers == SquareBB[s + Up] && relative_rank(Us, s) >= RANK_5) { - b = shift(supported) & ~theirPawns; + b = shift(support) & ~theirPawns; while (b) if (!more_than_one(theirPawns & PawnAttacks[Us][pop_lsb(&b)])) e->passedPawns[Us] |= s; } // Score this pawn - if (supported | phalanx) - score += Connected[opposed][bool(phalanx)][popcount(supported)][relative_rank(Us, s)]; + if (support | phalanx) + score += Connected[opposed][bool(phalanx)][popcount(support)][relative_rank(Us, s)]; else if (!neighbours) score -= Isolated, e->weakUnopposed[Us] += !opposed; @@ -137,7 +137,7 @@ namespace { else if (backward) score -= Backward, e->weakUnopposed[Us] += !opposed; - if (doubled && !supported) + if (doubled && !support) score -= Doubled; } @@ -214,14 +214,14 @@ Value Entry::evaluate_shelter(const Position& pos, Square ksq) { for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); - int ourRank = b ? relative_rank(Us, backmost_sq(Us, b)) : 0; + Rank ourRank = b ? relative_rank(Us, backmost_sq(Us, b)) : RANK_1; b = theirPawns & file_bb(f); - int theirRank = b ? relative_rank(Us, frontmost_sq(Them, b)) : 0; + Rank theirRank = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1; int d = std::min(f, ~f); safety += ShelterStrength[d][ourRank]; - safety -= (ourRank && (ourRank == theirRank - 1)) ? 66 * (theirRank == RANK_3) + safety -= (ourRank && (ourRank == theirRank - 1)) ? 66 * (theirRank == RANK_3) : UnblockedStorm[d][theirRank]; } @@ -237,7 +237,7 @@ Score Entry::do_king_safety(const Position& pos) { Square ksq = pos.square(Us); kingSquares[Us] = ksq; - castlingRights[Us] = pos.can_castle(Us); + castlingRights[Us] = pos.castling_rights(Us); int minKingPawnDistance = 0; Bitboard pawns = pos.pieces(Us, PAWN);