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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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