position: 使用 rule50 和 gamePly 代替老变量

This commit is contained in:
Calcitem 2020-09-06 22:50:54 +08:00
parent 2e57330126
commit ddbd0c2ea6
2 changed files with 11 additions and 19 deletions

View File

@ -477,8 +477,8 @@ bool Position::set_position(const struct Rule *newRule)
{ {
rule = *newRule; rule = *newRule;
this->currentStep = 0; gamePly = 0;
this->moveStep = 0; st->rule50 = 0;
phase = PHASE_READY; phase = PHASE_READY;
set_side_to_move(BLACK); set_side_to_move(BLACK);
@ -525,8 +525,8 @@ bool Position::reset()
return true; return true;
} }
currentStep = 0; gamePly = 0;
moveStep = 0; st->rule50 = 0;
phase = PHASE_READY; phase = PHASE_READY;
set_side_to_move(BLACK); set_side_to_move(BLACK);
@ -637,7 +637,7 @@ bool Position::put_piece(Square s, bool updateCmdlist)
sprintf(cmdline, "(%1u,%1u) %02u:%02u", sprintf(cmdline, "(%1u,%1u) %02u:%02u",
file, rank, seconds / 60, seconds % 60); file, rank, seconds / 60, seconds % 60);
cmdlist.emplace_back(string(cmdline)); cmdlist.emplace_back(string(cmdline));
currentStep++; gamePly++;
} }
currentSquare = s; currentSquare = s;
@ -680,7 +680,7 @@ bool Position::put_piece(Square s, bool updateCmdlist)
goto out; goto out;
} }
// When hase == GAME_MOVING // When phase == GAME_MOVING
// if illegal // if illegal
if (pieceCountOnBoard[sideToMove] > rule.nPiecesAtLeast || if (pieceCountOnBoard[sideToMove] > rule.nPiecesAtLeast ||
@ -703,8 +703,8 @@ bool Position::put_piece(Square s, bool updateCmdlist)
sprintf(cmdline, "(%1u,%1u)->(%1u,%1u) %02u:%02u", currentSquare / RANK_NB, currentSquare % RANK_NB + 1, sprintf(cmdline, "(%1u,%1u)->(%1u,%1u) %02u:%02u", currentSquare / RANK_NB, currentSquare % RANK_NB + 1,
file, rank, seconds / 60, seconds % 60); file, rank, seconds / 60, seconds % 60);
cmdlist.emplace_back(string(cmdline)); cmdlist.emplace_back(string(cmdline));
currentStep++; gamePly++;
moveStep++; st->rule50++;
} }
fromTo = square_bb(currentSquare) | square_bb(s); fromTo = square_bb(currentSquare) | square_bb(s);
@ -794,8 +794,8 @@ bool Position::remove_piece(Square s, bool updateCmdlist)
seconds = update(); seconds = update();
sprintf(cmdline, "-(%1u,%1u) %02u:%02u", file, rank, seconds / 60, seconds % 60); sprintf(cmdline, "-(%1u,%1u) %02u:%02u", file, rank, seconds / 60, seconds % 60);
cmdlist.emplace_back(string(cmdline)); cmdlist.emplace_back(string(cmdline));
currentStep++; gamePly++;
moveStep = 0; st->rule50 = 0;
} }
currentSquare = SQ_0; currentSquare = SQ_0;
@ -1035,7 +1035,7 @@ bool Position::check_gameover_condition(int8_t updateCmdlist)
} }
if (rule.maxStepsLedToDraw > 0 && if (rule.maxStepsLedToDraw > 0 &&
moveStep > rule.maxStepsLedToDraw) { st->rule50 > rule.maxStepsLedToDraw) {
winner = DRAW; winner = DRAW;
phase = PHASE_GAMEOVER; phase = PHASE_GAMEOVER;
if (updateCmdlist) { if (updateCmdlist) {

View File

@ -203,9 +203,6 @@ public:
int score[COLOR_NB] { 0 }; int score[COLOR_NB] { 0 };
int score_draw { 0 }; int score_draw { 0 };
Step currentStep;
int moveStep;
static const int onBoard[SQUARE_NB]; static const int onBoard[SQUARE_NB];
// Relate to Rule // Relate to Rule
@ -342,11 +339,6 @@ inline Square Position::current_square() const
return currentSquare; return currentSquare;
} }
inline int Position::get_step() const
{
return currentStep;
}
inline enum Phase Position::get_phase() const inline enum Phase Position::get_phase() const
{ {
return phase; return phase;