From: Marco Costalba Date: Thu, 19 Aug 2010 16:38:10 +0000 (+0100) Subject: Move piece values in piece.h / piece.cpp X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=df4b106716f0fb0a5f5887b1cffeb544174008f7 Move piece values in piece.h / piece.cpp Where they belong. Note that array PieceValueMidgame[] and PieceValueEndgame[] are now declared extern in the header and moved in piece.cpp so to avoid allocate the array each time the header is included ! No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/piece.cpp b/src/piece.cpp index 4f2fde76..84d12af1 100644 --- a/src/piece.cpp +++ b/src/piece.cpp @@ -28,6 +28,33 @@ using namespace std; +// Tables indexed by Piece + +const Value PieceValueMidgame[17] = { + VALUE_ZERO, + PawnValueMidgame, KnightValueMidgame, BishopValueMidgame, + RookValueMidgame, QueenValueMidgame, + VALUE_ZERO, VALUE_ZERO, VALUE_ZERO, + PawnValueMidgame, KnightValueMidgame, BishopValueMidgame, + RookValueMidgame, QueenValueMidgame, + VALUE_ZERO, VALUE_ZERO, VALUE_ZERO +}; + +const Value PieceValueEndgame[17] = { + VALUE_ZERO, + PawnValueEndgame, KnightValueEndgame, BishopValueEndgame, + RookValueEndgame, QueenValueEndgame, + VALUE_ZERO, VALUE_ZERO, VALUE_ZERO, + PawnValueEndgame, KnightValueEndgame, BishopValueEndgame, + RookValueEndgame, QueenValueEndgame, + VALUE_ZERO, VALUE_ZERO, VALUE_ZERO +}; + +const int SlidingArray[18] = { + 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0 +}; + + //// //// Functions //// diff --git a/src/piece.h b/src/piece.h index 6592de1a..f88eead8 100644 --- a/src/piece.h +++ b/src/piece.h @@ -27,6 +27,7 @@ #include "color.h" #include "square.h" +#include "value.h" //// @@ -51,9 +52,26 @@ ENABLE_OPERATORS_ON(Piece); //// Constants //// -const int SlidingArray[18] = { - 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0 -}; +/// Important: If the material values are changed, one must also +/// adjust the piece square tables, and the method game_phase() in the +/// Position class! +/// +/// Values modified by Joona Kiiski + +const Value PawnValueMidgame = Value(0x0C6); +const Value PawnValueEndgame = Value(0x102); +const Value KnightValueMidgame = Value(0x331); +const Value KnightValueEndgame = Value(0x34E); +const Value BishopValueMidgame = Value(0x344); +const Value BishopValueEndgame = Value(0x359); +const Value RookValueMidgame = Value(0x4F6); +const Value RookValueEndgame = Value(0x4FE); +const Value QueenValueMidgame = Value(0x9D9); +const Value QueenValueEndgame = Value(0x9FE); + +extern const Value PieceValueMidgame[17]; +extern const Value PieceValueEndgame[17]; +extern const int SlidingArray[18]; //// @@ -73,7 +91,7 @@ inline Piece piece_of_color_and_type(Color c, PieceType pt) { } inline int piece_is_slider(Piece p) { - return SlidingArray[int(p)]; + return SlidingArray[p]; } inline SquareDelta pawn_push(Color c) { diff --git a/src/position.cpp b/src/position.cpp index b7272645..fb0a32f3 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -71,10 +71,16 @@ struct PieceLetters : std::map { } }; + //// -//// Variables +//// Constants and variables //// +/// Bonus for having the side to move (modified by Joona Kiiski) + +static const Score TempoValue = make_score(48, 22); + + Key Position::zobrist[2][8][64]; Key Position::zobEp[64]; Key Position::zobCastle[16]; diff --git a/src/value.h b/src/value.h index cb545d61..faa55dd6 100644 --- a/src/value.h +++ b/src/value.h @@ -99,54 +99,6 @@ inline Score operator/(Score s, int i) { return make_score(mg_value(s) / i, eg_v inline Score operator*(Score s1, Score s2); -//// -//// Constants and variables -//// - -/// Piece values, middle game and endgame - -/// Important: If the material values are changed, one must also -/// adjust the piece square tables, and the method game_phase() in the -/// Position class! -/// -/// Values modified by Joona Kiiski - -const Value PawnValueMidgame = Value(0x0C6); -const Value PawnValueEndgame = Value(0x102); -const Value KnightValueMidgame = Value(0x331); -const Value KnightValueEndgame = Value(0x34E); -const Value BishopValueMidgame = Value(0x344); -const Value BishopValueEndgame = Value(0x359); -const Value RookValueMidgame = Value(0x4F6); -const Value RookValueEndgame = Value(0x4FE); -const Value QueenValueMidgame = Value(0x9D9); -const Value QueenValueEndgame = Value(0x9FE); - -const Value PieceValueMidgame[17] = { - VALUE_ZERO, - PawnValueMidgame, KnightValueMidgame, BishopValueMidgame, - RookValueMidgame, QueenValueMidgame, - VALUE_ZERO, VALUE_ZERO, VALUE_ZERO, - PawnValueMidgame, KnightValueMidgame, BishopValueMidgame, - RookValueMidgame, QueenValueMidgame, - VALUE_ZERO, VALUE_ZERO, VALUE_ZERO -}; - -const Value PieceValueEndgame[17] = { - VALUE_ZERO, - PawnValueEndgame, KnightValueEndgame, BishopValueEndgame, - RookValueEndgame, QueenValueEndgame, - VALUE_ZERO, VALUE_ZERO, VALUE_ZERO, - PawnValueEndgame, KnightValueEndgame, BishopValueEndgame, - RookValueEndgame, QueenValueEndgame, - VALUE_ZERO, VALUE_ZERO, VALUE_ZERO -}; - -/// Bonus for having the side to move (modified by Joona Kiiski) - -const Score TempoValue = make_score(48, 22); - - //// //// Inline functions ////