From 4b96b675e5dcc2d88f7e6227308bbeb53d446927 Mon Sep 17 00:00:00 2001 From: CalciteM Date: Sun, 23 Jun 2019 15:27:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E4=B8=BA=E5=85=88=E6=89=8B=E5=88=99?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=9D=80=E6=A3=8B=E6=8A=A2=E5=8D=A0=E6=98=9F?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NineChess/src/ninechess.h | 7 +++++++ NineChess/src/ninechessai_ab.cpp | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/NineChess/src/ninechess.h b/NineChess/src/ninechess.h index 01c96970..0ce797f6 100644 --- a/NineChess/src/ninechess.h +++ b/NineChess/src/ninechess.h @@ -252,6 +252,12 @@ public: return currentPos; } + // 判断位置点是否为星位 (星位是经常会先占的位置) + static bool isStartPoint(int pos) + { + return (pos == 17 || pos == 19 || pos == 21 || pos == 23); + } + // 获取当前步数 int getStep() const { @@ -281,6 +287,7 @@ public: { return winner; } + // 玩家1和玩家2的用时 void getElapsedTimeMS(int &p1_ms, int &p2_ms); diff --git a/NineChess/src/ninechessai_ab.cpp b/NineChess/src/ninechessai_ab.cpp index 3c45fa7c..54e22e28 100644 --- a/NineChess/src/ninechessai_ab.cpp +++ b/NineChess/src/ninechessai_ab.cpp @@ -61,7 +61,14 @@ void NineChessAi_ab::buildChildren(Node *node) if ((chessTemp.context.stage) & (NineChess::GAME_PLACING | NineChess::GAME_NOTSTARTED)) { for (int i = NineChess::POS_BEGIN; i < NineChess::POS_END; i++) { if (!chessTemp.board_[i]) { - addNode(node, 0, i); + if (node == rootNode && chessTemp.context.stage == NineChess::GAME_NOTSTARTED) { + // 若为先手,则抢占星位 + if (NineChess::isStartPoint(i)) { + addNode(node, INT32_MAX, i); + } + } else { + addNode(node, 0, i); + } } } }