mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-23 18:46:59 +08:00
Fixed compile errors.
This commit is contained in:
175
src/evaluate.h
175
src/evaluate.h
@@ -34,6 +34,181 @@ constexpr Value Tempo = Value(28); // Must be visible to search
|
||||
std::string trace(const Position& pos);
|
||||
|
||||
Value evaluate(const Position& pos);
|
||||
|
||||
// --- <20>]<5D><><EFBFBD><EFBFBD><D690>Ŏg<C58E><67><EFBFBD>萔 KPP(<28>ʂƔC<C694><43>2<EFBFBD><32>)<29><>P<EFBFBD>ɑ<EFBFBD><C991><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enum
|
||||
|
||||
// (<28>]<5D><><EFBFBD><EFBFBD><D690>̎<EFBFBD><CC8E><EFBFBD><EFBFBD>̂Ƃ<CC82><C682>ɂ́ABonaPiece<63>͎<EFBFBD><CD8E>R<EFBFBD>ɒ<EFBFBD><C992>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ł<CC82><C582><EFBFBD><EFBFBD>ł͒<C582><CD92>`<60><><EFBFBD>Ȃ<EFBFBD><C882>B)
|
||||
|
||||
|
||||
// Bonanza<7A><61>KKP/KPP<50>ƌ<EFBFBD><C68C><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD>P(Piece)<29><><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>B
|
||||
// <20><> KPP<50><50><EFBFBD><EFBFBD><EFBFBD>߂<EFBFBD><DF82>Ƃ<EFBFBD><C682>ɁA39<33>̒n<CC92>_<EFBFBD>̕<EFBFBD><CC95>̂悤<CC82>ɁA<C981><41><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD>ɑ<C991><CE82>Ĉ<EFBFBD><C488>ӂȔԍ<C894><D48D><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD>ƂȂ<C682><C882>B
|
||||
enum BonaPiece : int32_t
|
||||
{
|
||||
// f = friend(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>̈Ӗ<CC88><D396>Be = enemy(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>̈Ӗ<CC88>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̎<EFBFBD><CC8E>̒l
|
||||
BONA_PIECE_NOT_INIT = -1,
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ȋ<EFBFBD><C88B>B<EFBFBD><EFBFBD><EE978E><EFBFBD>̂Ƃ<CC82><C682>Ȃǂ́A<CD81>s<EFBFBD>v<EFBFBD>ȋ<EFBFBD><C88B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɉړ<C988><DA93><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
BONA_PIECE_ZERO = 0,
|
||||
|
||||
fe_hand_end = BONA_PIECE_ZERO + 1,
|
||||
|
||||
// Bonanza<7A>̂悤<CC82>ɔՏ<C994><D58F>̂<EFBFBD><CC82>肦<EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>̕<EFBFBD><CC95>⍁<EFBFBD>̔ԍ<CC94><D48D><EFBFBD><EFBFBD>l<EFBFBD>߂Ȃ<DF82><C882>B
|
||||
// <20><><EFBFBD>R1) <20>w<EFBFBD>K<EFBFBD>̂Ƃ<CC82><C682>ɑ<EFBFBD><C991><EFBFBD>PP<50><50>1<EFBFBD>i<EFBFBD>ڂɍ<DA82><C98D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>āA<C481><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>ϊ<EFBFBD><CF8A>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Đ<EFBFBD><C490><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><CC82><EFBFBD><EF82B5><EFBFBD>B
|
||||
// <20><><EFBFBD>R2) <20>c<EFBFBD>^Bitboard<72><64><EFBFBD><EFBFBD>Square<72><65><EFBFBD><EFBFBD><EFBFBD>̕ϊ<CC95><CF8A>ɍ<EFBFBD><C98D><EFBFBD><EFBFBD>B
|
||||
|
||||
// --- <20>Տ<EFBFBD><D58F>̋<EFBFBD>
|
||||
f_pawn = fe_hand_end,
|
||||
e_pawn = f_pawn + SQUARE_NB,
|
||||
f_knight = e_pawn + SQUARE_NB,
|
||||
e_knight = f_knight + SQUARE_NB,
|
||||
f_bishop = e_knight + SQUARE_NB,
|
||||
e_bishop = f_bishop + SQUARE_NB,
|
||||
f_rook = e_bishop + SQUARE_NB,
|
||||
e_rook = f_rook + SQUARE_NB,
|
||||
f_queen = e_rook + SQUARE_NB,
|
||||
e_queen = f_queen + SQUARE_NB,
|
||||
fe_end = e_queen + SQUARE_NB,
|
||||
f_king = fe_end,
|
||||
e_king = f_king + SQUARE_NB,
|
||||
fe_end2 = e_king + SQUARE_NB, // <20>ʂ<EFBFBD><CA82>܂߂<DC82><DF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̔ԍ<CC94><D48D>B
|
||||
};
|
||||
|
||||
|
||||
// BonaPiece<63><65><EFBFBD><EFBFBD><EFBFBD>肩<EFBFBD>猩<EFBFBD><E78CA9><EFBFBD>Ƃ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>39<33>̕<EFBFBD><CC95><EFBFBD><EFBFBD><EFBFBD><EFBFBD>肩<EFBFBD>猩<EFBFBD><E78CA9><EFBFBD>ƌ<EFBFBD><C68C><EFBFBD><EFBFBD><EFBFBD>71<37>̕<EFBFBD>)<29>̔ԍ<CC94><D48D>Ƃ<EFBFBD>
|
||||
// <20>y<EFBFBD>A<EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD>ExtBonaPiece<63>^<5E>ƌĂԂ<C482><D482>Ƃɂ<C682><C982><EFBFBD><EFBFBD>B
|
||||
union ExtBonaPiece
|
||||
{
|
||||
struct {
|
||||
BonaPiece fw; // from white
|
||||
BonaPiece fb; // from black
|
||||
};
|
||||
BonaPiece from[2];
|
||||
|
||||
ExtBonaPiece() {}
|
||||
ExtBonaPiece(BonaPiece fw_, BonaPiece fb_) : fw(fw_), fb(fb_) {}
|
||||
};
|
||||
|
||||
// <20><EFBFBD><EE82AA><EFBFBD><EFBFBD><EFBFBD>̎w<CC8E><77><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>Ăǂ<C482><C782><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǂ<EFBFBD><C782>Ɉړ<C988><DA93><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><CC82>̏<EFBFBD><CC8F><EFBFBD><EFBFBD>B
|
||||
// <20><><EFBFBD><EFBFBD>ExtBonaPiece<63>\<5C><><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>B
|
||||
struct ChangedBonaPiece
|
||||
{
|
||||
ExtBonaPiece old_piece;
|
||||
ExtBonaPiece new_piece;
|
||||
};
|
||||
|
||||
// KPP<50>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD>̔Տ<CC94><D58F>̋<EFBFBD>pc<70>ɑΉ<C991><CE89><EFBFBD><EFBFBD><EFBFBD>BonaPiece<63><65><EFBFBD><EFBFBD><EFBFBD>߂邽<DF82>߂̔z<CC94><7A><EFBFBD>B
|
||||
// <20><>)
|
||||
// BonaPiece fb = kpp_board_index[pc].fb + sq; // <20><><EFBFBD>肩<EFBFBD>猩<EFBFBD><E78CA9>sq<73>ɂ<EFBFBD><C982><EFBFBD>pc<70>ɑΉ<C991><CE89><EFBFBD><EFBFBD><EFBFBD>BonaPiece
|
||||
// BonaPiece fw = kpp_board_index[pc].fw + sq; // <20><><EFBFBD>肩<EFBFBD>猩<EFBFBD><E78CA9>sq<73>ɂ<EFBFBD><C982><EFBFBD>pc<70>ɑΉ<C991><CE89><EFBFBD><EFBFBD><EFBFBD>BonaPiece
|
||||
extern ExtBonaPiece kpp_board_index[PIECE_NB];
|
||||
|
||||
// <20>]<5D><><EFBFBD><EFBFBD><D690>ŗp<C597><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>g<EFBFBD>B<EFBFBD>ǂ̋<C782>(PieceNumber)<29><><EFBFBD>ǂ<EFBFBD><C782>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>̂<EFBFBD>(BonaPiece)<29><><EFBFBD>ێ<EFBFBD><DB8E><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD>
|
||||
struct EvalList
|
||||
{
|
||||
// <20>]<5D><><EFBFBD><EFBFBD>(FV38<33>^)<29>ŗp<C597><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԍ<EFBFBD><D48D>̃<EFBFBD><CC83>X<EFBFBD>g
|
||||
BonaPiece* piece_list_fw() const { return const_cast<BonaPiece*>(pieceListFw); }
|
||||
BonaPiece* piece_list_fb() const { return const_cast<BonaPiece*>(pieceListFb); }
|
||||
|
||||
// <20>w<EFBFBD>肳<EFBFBD>ꂽpiece_no<6E>̋<EFBFBD><CC8B><EFBFBD>ExtBonaPiece<63>^<5E>ɕϊ<C995><CF8A><EFBFBD><EFBFBD>ĕԂ<C495><D482>B
|
||||
ExtBonaPiece bona_piece(PieceNumber piece_no) const
|
||||
{
|
||||
ExtBonaPiece bp;
|
||||
bp.fw = pieceListFw[piece_no];
|
||||
bp.fb = pieceListFb[piece_no];
|
||||
return bp;
|
||||
}
|
||||
|
||||
// <20>Տ<EFBFBD><D58F><EFBFBD>sq<73>̏<EFBFBD><CC8F><EFBFBD>piece_no<6E><6F>pc<70>̋<EFBFBD><CC8B><EFBFBD><EFBFBD>z<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD>
|
||||
void put_piece(PieceNumber piece_no, Square sq, Piece pc) {
|
||||
set_piece_on_board(piece_no, BonaPiece(kpp_board_index[pc].fw + sq), BonaPiece(kpp_board_index[pc].fb + inverse(sq)), sq);
|
||||
}
|
||||
|
||||
// <20>Տ<EFBFBD><D58F>̂<EFBFBD><CC82>鏡sq<73>ɑΉ<C991><CE89><EFBFBD><EFBFBD><EFBFBD>PieceNumber<65><72><EFBFBD>Ԃ<EFBFBD><D482>B
|
||||
PieceNumber piece_no_of_board(Square sq) const { return piece_no_list_board[sq]; }
|
||||
|
||||
// pieceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
// <20><EFBFBD><EE978E><EFBFBD>ɑΉ<C991><CE89><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鎞<EFBFBD>̂<EFBFBD><CC82>߂ɁA<C981><41><EFBFBD>g<EFBFBD>p<EFBFBD>̋<EFBFBD><CC8B>̒l<CC92><6C>BONA_PIECE_ZERO<52>ɂ<EFBFBD><C982>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B
|
||||
// <20>ʏ<EFBFBD><CA8F>̕]<5D><><EFBFBD><EFBFBD><D690><EFBFBD><EFBFBD><EFBFBD><EE978E><EFBFBD>̕]<5D><><EFBFBD><EFBFBD><D690>Ƃ<EFBFBD><C682>ė<EFBFBD><C497>p<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>B
|
||||
// piece_no_list<73>̂ق<CC82><D982>̓f<CD83>o<EFBFBD>b<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>悤<EFBFBD><E682A4>PIECE_NUMBER_NB<4E>ŏ<EFBFBD><C58F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
void clear()
|
||||
{
|
||||
|
||||
for (auto& p : pieceListFw)
|
||||
p = BONA_PIECE_ZERO;
|
||||
|
||||
for (auto& p : pieceListFb)
|
||||
p = BONA_PIECE_ZERO;
|
||||
|
||||
for (auto& v : piece_no_list_board)
|
||||
v = PIECE_NUMBER_NB;
|
||||
}
|
||||
|
||||
// list<73><74><EFBFBD><EFBFBD><EFBFBD>ς̂Ƃ<CC82><C682>́Aadd()/remove()<29><><EFBFBD>T<EFBFBD>|<7C>[<5B>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>B
|
||||
// DirtyPiece<63>̂ق<CC82><D982><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
// list<73><74>add()<29><><EFBFBD><EFBFBD><EFBFBD>B
|
||||
void add(BonaPiece fb);
|
||||
|
||||
// list<73><74><EFBFBD><EFBFBD>remove<76><65><EFBFBD><EFBFBD><EFBFBD>B
|
||||
void remove(BonaPiece fb);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ŕێ<C595><DB8E><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD>pieceListFb[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BonaPiece<63>ł<EFBFBD><C582>邩<EFBFBD><E982A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
||||
// <20><> : <20>f<EFBFBD>o<EFBFBD>b<EFBFBD>O<EFBFBD>p<EFBFBD>B<EFBFBD>x<EFBFBD><78><EFBFBD>B
|
||||
bool is_valid(const Position& pos);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// <20>Տ<EFBFBD>sq<73>ɂ<EFBFBD><C982><EFBFBD>piece_no<6E>̋<EFBFBD><CC8B><EFBFBD>BonaPiece<63><65>fb,fw<66>ł<EFBFBD><C582>邱<EFBFBD>Ƃ<EFBFBD><C682>ݒ肷<DD92><E882B7><EFBFBD>B
|
||||
inline void set_piece_on_board(PieceNumber piece_no, BonaPiece fw, BonaPiece fb, Square sq)
|
||||
{
|
||||
assert(is_ok(piece_no));
|
||||
pieceListFw[piece_no] = fw;
|
||||
pieceListFb[piece_no] = fb;
|
||||
piece_no_list_board[sq] = piece_no;
|
||||
}
|
||||
|
||||
// <20><EFBFBD>X<EFBFBD>g<EFBFBD>B<EFBFBD><42><EFBFBD>ԍ<EFBFBD>(PieceNumber)<29><><EFBFBD><EFBFBD><EFBFBD>̋<CC8B>ǂ<EFBFBD><C782>ɂ<EFBFBD><C982><EFBFBD><EFBFBD>̂<EFBFBD>(BonaPiece)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BFV38<33>Ȃǂŗp<C597><70><EFBFBD><EFBFBD><EFBFBD>B
|
||||
|
||||
// <20><EFBFBD>X<EFBFBD>g<EFBFBD>̒<EFBFBD><CC92><EFBFBD>
|
||||
// 38<33>Œ<EFBFBD>
|
||||
public:
|
||||
int length() const { return PIECE_NUMBER_KING; }
|
||||
|
||||
// VPGATHERDD<44><44><EFBFBD>g<EFBFBD><67><EFBFBD>s<EFBFBD><73><EFBFBD>A4<41>̔{<7B><><EFBFBD>łȂ<C582><C882><EFBFBD><EFBFBD>Ȃ<CE82><C882>Ȃ<EFBFBD><C882>B
|
||||
// <20>܂<EFBFBD><DC82>AKPPT<50>^<5E>]<5D><><EFBFBD><EFBFBD><D690>Ȃǂ́A39,40<34>Ԗڂ̗v<CC97>f<EFBFBD><66><EFBFBD>[<5B><><EFBFBD>ł<EFBFBD><C582>邱<EFBFBD>Ƃ<EFBFBD><C682>O<EFBFBD><4F><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD>
|
||||
// <20>A<EFBFBD>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>ӏ<EFBFBD><D38F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂Œ<CC82><C592>ӂ<EFBFBD><D382>邱<EFBFBD>ƁB
|
||||
static const int MAX_LENGTH = 40;
|
||||
private:
|
||||
|
||||
BonaPiece pieceListFw[MAX_LENGTH];
|
||||
BonaPiece pieceListFb[MAX_LENGTH];
|
||||
|
||||
// <20>Տ<EFBFBD><D58F>̋<EFBFBD><CC8B>ɑ<C991><CE82>āA<C481><41><EFBFBD>̋<EFBFBD><CC8B>ԍ<EFBFBD>(PieceNumber)<29><><EFBFBD>ێ<EFBFBD><DB8E><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
// <20>ʂ<EFBFBD>SQ_NB<4E>Ɉړ<C988><DA93><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>p<EFBFBD><70>+1<>܂ŕێ<C595><DB8E><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A
|
||||
// SQ_NB<4E>̋ʂ<CC8B><CA82>ړ<EFBFBD><DA93><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>̂ŁA<C581><41><EFBFBD>̒l<CC92><6C><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>Ƃ͂Ȃ<CD82><C882>͂<EFBFBD><CD82>B
|
||||
PieceNumber piece_no_list_board[SQUARE_NB_PLUS1];
|
||||
};
|
||||
|
||||
// <20>]<5D><><EFBFBD>l<EFBFBD>̍<EFBFBD><CC8D><EFBFBD><EFBFBD>v<EFBFBD>Z<EFBFBD>̊Ǘ<CC8A><C797>p
|
||||
// <20>O<EFBFBD>̋ǖʂ<C796><CA82><EFBFBD><EFBFBD>ړ<EFBFBD><DA93><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԍ<EFBFBD><D48D><EFBFBD><EFBFBD>Ǘ<EFBFBD><C797><EFBFBD><EFBFBD>邽<EFBFBD>߂̍\<5C><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>́A<CD81>ő<EFBFBD><C591><EFBFBD>2<EFBFBD>B
|
||||
struct DirtyPiece
|
||||
{
|
||||
// <20><><EFBFBD>̋<EFBFBD><CC8B>ԍ<EFBFBD><D48D>̋<CC8B><EE82AA><EFBFBD><EFBFBD><EFBFBD>牽<EFBFBD>ɕς<C995><CF82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD>
|
||||
Eval::ChangedBonaPiece changed_piece[2];
|
||||
|
||||
// dirty<74>ɂȂ<C982><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԍ<EFBFBD>
|
||||
PieceNumber pieceNo[2];
|
||||
|
||||
// dirty<74>ɂȂ<C982><C882><EFBFBD><EFBFBD><EFBFBD><C290>B
|
||||
// null move<76><65><EFBFBD><EFBFBD>0<EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>肤<EFBFBD><E882A4><EFBFBD>B
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǝ<EFBFBD><C68E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƃōő<C58D><C591><EFBFBD>2<EFBFBD>B
|
||||
int dirty_num;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif // #ifndef EVALUATE_H_INCLUDED
|
||||
|
||||
Reference in New Issue
Block a user