5×5 井字游戏算法,要求四子连线

我被要求制作一个井字游戏算法,但我不是很明白如何检查每一行或每一列是否能成为结束状态。

我尝试了5×5的棋盘,但只能做到五子连线,所以我希望能找到一种方法来实现四子连线的结束状态。我还没有考虑对角线,所以我只专注于检查列和行。

我的检查代码如下:

var B = this.board;    //检查行    for(var i = 0; i <= 20; i = i + 5) {        if(B[i] !== "E" && B[i] === B[i + 1] && B[i + 1] == B[i + 2] && B[i + 2] == B[i + 3] && B[i + 3] == B[i + 4]) {            this.result = B[i] + "-won"; //更新状态结果            return true;        }    }    //检查列    for(var i = 0; i <= 4 ; i++) {        if(B[i] !== "E" && B[i] === B[i + 5] && B[i + 5] === B[i + 10] && B[i + 10] === B[i + 15])  && B[i +15] === B[i + 20]{            this.result = B[i] + "-won"; //更新状态结果            return true;        }    }    var available = this.emptyCells();    if(available.length == 0) {        //游戏平局        this.result = "draw"; //更新状态结果        return true;    }    else {        return false;    } 

回答:

你可以只遍历最上面的行(从0到1,包括1)和所有列,检查从给定行开始向下的一列中连续4个单元格是否包含相同的元素。

你可以对行做同样的事情,通过遍历最左边的列(同样,从0到1)和所有行,检查向右的序列是否符合要求。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注