簡易五子棋AI算法分析

五子棋是我最喜歡的棋類之一,其多種可能性和不肯定性爲其增長了神祕色彩,其中分爲禁手模式和不由手模式。這裏就很少說了算法

主要想說一下,五子棋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

相關文章
相關標籤/搜索