diff --git a/src/ai/movegen.cpp b/src/ai/movegen.cpp index b77cdc29..450a4f83 100644 --- a/src/ai/movegen.cpp +++ b/src/ai/movegen.cpp @@ -357,6 +357,15 @@ void MoveList::shuffle() array movePriorityTable2 = { (move_t)16, (move_t)18, (move_t)20, (move_t)22 }; // 中圈十字架 array movePriorityTable3 = { (move_t)24, (move_t)26, (move_t)28, (move_t)30, (move_t)8, (move_t)10, (move_t)12, (move_t)14 }; // 外内圈十字架 + if (rule.nTotalPiecesEachSide == 9) + { + movePriorityTable0 = { (move_t)16, (move_t)18, (move_t)20, (move_t)22 }; // 中圈十字架 (星位) + movePriorityTable1 = { (move_t)24, (move_t)26, (move_t)28, (move_t)30, (move_t)8, (move_t)10, (move_t)12, (move_t)14 }; // 外内圈十字架 + movePriorityTable2 = { (move_t)17, (move_t)19, (move_t)21, (move_t)23 }; // 中圈四个顶点 + movePriorityTable3 = { (move_t)25, (move_t)27, (move_t)29, (move_t)31, (move_t)9, (move_t)11, (move_t)13, (move_t)15 }; // 外圈和内圈四个顶点 + } + + if (options.getRandomMoveEnabled()) { uint32_t seed = static_cast(now()); diff --git a/src/game/board.cpp b/src/game/board.cpp index 175e9496..c28add33 100644 --- a/src/game/board.cpp +++ b/src/game/board.cpp @@ -510,10 +510,17 @@ bool Board::getCurrentPiece(player_t &player, int &number, square_t square) bool Board::isStar(square_t square) { - return (square == 17 || - square == 19 || - square == 21 || - square == 23); + if (rule.nTotalPiecesEachSide == 12) { + return (square == 17 || + square == 19 || + square == 21 || + square == 23); + } + + return (square == 16 || + square == 18 || + square == 20 || + square == 22); } void Board::mirror(list &cmdlist, char* cmdline, int32_t move_, square_t square, bool cmdChange /*= true*/)