五子棋是我最喜歡的棋類之一,其多種可能性和不肯定性爲其增長了神祕色彩,其中分爲禁手模式和不由手模式。這裏就很少說了算法
主要想說一下,五子棋AI算法的整個流程。it
因爲五子棋的判斷很簡單,就是以一個點爲中心向 "米" 字型擴散,任意有5顆則勝利。因此再也不多說。循環
要想實現人機對戰,給機器聰明的大腦。咱們必須將棋型轉化爲數字模型供機器參考rsa
例如,當遇到活4的狀況(危險性最大),咱們給它設置一個最大值。遍歷
整體的流程就是,先遍歷棋盤每個點的八個方向(固然邊緣點除外),代碼以下while
void traversal(int n, int *i, int *j)
{
switch (n)
{
case 1:*i += 1; break;
case 2:*i += 1; *j += 1; break;
case 3:*j += 1; break;
case 4:*i -= 1; *j += 1; break;
case 5:*i -= 1; break;
case 6:*i -= 1; *j -= 1; break;
case 7:*j -= 1; break;
case 8:*i += 1; *j -= 1; break;
}
}cas
while (n != 5)數字
{void
k1 = chessType(n, p, q);
n += 4; /* k1,k2爲2個反方向的棋型編號 */
k2 = chessType(n, p, q);
n -= 3;模型
}
//巧妙利用循環,實現n從1遍歷到8