在此章節,我們會提供您一些想法,幫助您提升程式的棋力,以便在競賽中取勝。
請參考以下範例,若您是黑子(1)且輪到您的回合,依照目前的局面,您應該將棋子落在(F, 10)或是(K, 10)以獲得勝利,因此這兩個點具有最高的「權重」。透過分析棋盤上每一個點的權重,可以幫助您的程式找出最佳的落子位置。
為了方便講解權重的概念,接下來的棋盤範例會以 x 代表黑子、 o 代表白子。
請看以下範例,假設我方為黑子,由於在此黑子周圍的八個點可以提供更多的連線機會,因此我們會將此黑子周圍的八點標註為「權重 1 」,而其餘地方因為無法提供更高的連線機會,因此權重為 0。
在下列範例中,我方依然是黑子,但我們可以發現,若我們將棋子落在「權重 2 」的位置時,雖然可以使我方達成活三,但同時也會提供對手產生活四的機會,因此在白子活三的兩端我們會將權重調高至「權重 3 」,以便讓程式在這樣的局面採取防守而不是進攻的策略。
接下來我們考慮幾個比較複雜的局面,在以下範例中,白子看似呈現兩組活二,但實際上卻已經構成「洞四」,因此在(H, 7)位置的權重勢必為最高權重,若黑子沒有將棋子落在該位置,白子就會獲得勝利。
接下來將透過虛擬碼簡單講解如何使用權重分析的概念。
FiveInARow.c
/tmp/gomoku/${使用者名稱}
以外都可以讀寫並保留到直到對奕(十盤棋)結束(或是你的程式 return 1)。/[A-S], ((1[0-9])|[1-9])\n?/
(正規表達式)