From 8dbc4c6ad734b2e9415d9ba02a0a7a5287dcb374 Mon Sep 17 00:00:00 2001 From: Calcitem Date: Sat, 26 Oct 2019 01:08:54 +0800 Subject: [PATCH] =?UTF-8?q?movegen:=20=E4=B8=BA=E4=B9=9D=E5=AD=90=E6=A3=8B?= =?UTF-8?q?=E5=AE=9A=E5=88=B6=E5=80=99=E9=80=89=E7=9D=80=E6=B3=95=E6=8E=92?= =?UTF-8?q?=E5=88=97=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ai/movegen.cpp | 9 +++++++++ src/game/board.cpp | 15 +++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) 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*/)