井字游戏算法 5x5 table 连续 4 个
Tic tac toe algorithm 5x5 table with 4 in a row
我被要求制作一个 tictactoe 算法,但是我不太明白如何检查每一行或每一列是否可以成为结束状态。
我用 5x5 尝试过,但是我只能用 5 排来做,所以我希望如果结束状态需要连续 4 个,我有办法做到这一点。我还没有考虑对角线,所以我可以专注于列和行检查。
我的检查器看起来像这样
var B = this.board;
//check rows
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"; //update the state result
return true;
}
}
//check columns
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"; //update the state result
return true;
}
}
var available = this.emptyCells();
if(available.length == 0) {
//the game is draw
this.result = "draw"; //update the state result
return true;
}
else {
return false;
}
您可以只遍历最上面的行(从 0 到 1,包括在内)和所有列,并检查此列中从给定行开始向下的 4 个单元格的序列是否由相同的元素组成。
您可以通过遍历最左边的列(再次从 0 到 1)和所有行并检查顺序是否正确来对行执行相同的操作。
我被要求制作一个 tictactoe 算法,但是我不太明白如何检查每一行或每一列是否可以成为结束状态。
我用 5x5 尝试过,但是我只能用 5 排来做,所以我希望如果结束状态需要连续 4 个,我有办法做到这一点。我还没有考虑对角线,所以我可以专注于列和行检查。
我的检查器看起来像这样
var B = this.board;
//check rows
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"; //update the state result
return true;
}
}
//check columns
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"; //update the state result
return true;
}
}
var available = this.emptyCells();
if(available.length == 0) {
//the game is draw
this.result = "draw"; //update the state result
return true;
}
else {
return false;
}
您可以只遍历最上面的行(从 0 到 1,包括在内)和所有列,并检查此列中从给定行开始向下的 4 个单元格的序列是否由相同的元素组成。
您可以通过遍历最左边的列(再次从 0 到 1)和所有行并检查顺序是否正确来对行执行相同的操作。