• 简易五子棋AI算法分析


    五子棋是我最喜欢的棋类之一,其多种可能性和不确定性为其增加了神秘色彩,其中分为禁手模式和不禁手模式。这里就不多说了

    主要想说一下,五子棋AI算法的整个流程。

    由于五子棋的判断很简单,就是以一个点为中心向 "米" 字型扩散,任意有5颗则胜利。所以不再多说。

    要想实现人机对战,给机器聪明的大脑。我们必须将棋型转化为数字模型供机器参考

    例如,当遇到活4的情况(危险性最大),我们给它设置一个最大值。

    总体的流程就是,先遍历棋盘每一个点的八个方向(当然边缘点除外),代码如下

    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;
        }
    }

    while (n != 5)

    {

          k1 =  chessType(n, p, q);
            n += 4;            /* k1,k2为2个反方向的棋型编号 */
            k2 = chessType(n, p, q);
            n -= 3;

    }

    //巧妙利用循环,实现n从1遍历到8

  • 相关阅读:
    element-ui的气泡确认框
    ES6 检测数组中是否存在满足某些条件的元素实现方式
    P6788 「EZEC-3」四月樱花
    Codeforces Global Round 10(CF1392)
    Ynoi2019模拟赛
    谷粒学院项目分享(源码+资料+课件)全部齐全
    安装最新版NUXT
    LibreOJ #6284
    LibreOJ #6283
    LibreOJ #6282
  • 原文地址:https://www.cnblogs.com/Ten10/p/6527456.html
Copyright © 2020-2023  润新知