我正在尝试使用Javascript制作Connect 4游戏。 所以我开始尝试连续4次搜索水平线,然后编写:
for (var y = 0; y < Column - 1; y++)
for (var x = 0; x < Row - 1; x++)
if (myArray1[y][x] == 1){
Win1++;
if (Win1 == 4){
alert("Won");
}
} else {Win1 = 0}
我只在检查1行时才能正常工作,但是当我添加第二个for循环以检查它停止工作的列时。
我的意图是每当我放下一块时运行它(以及用于检查垂直和对角线的代码)。
答案 0 :(得分:1)
正如@LuanNico在评论中指出的那样,您需要在每行或每列之前重置计数器变量Win1
。
如果您的Column
和Row
变量包含列数和行数,则可能会因过早停止循环迭代一行或一行而出现一次性错误。
我建议稍微修改和重新组织您的代码,如下所示:
function checkColums(board, columns, rows) {
for (var y = 0; y < columns; y++) {
var consecutive = 0;
for (var x = 0; x < rows; x++) {
if (board[y][x] == 1) {
consecutive++;
if (consecutive == 4) {
return true;
}
}
}
}
return false;
}
function checkRows(board, columns, rows) {
for (var x = 0; x < rows; x++) {
var consecutive = 0;
for (var y = 0; y < columns; y++) {
if (board[y][x] == 1) {
consecutive++;
if (consecutive == 4) {
return true;
}
}
}
}
return false;
}
// Example:
var board = [
[1, 0, 1, 0],
[0, 1, 1, 0],
[1, 0, 1, 1],
[1, 1, 1, 0]
];
console.log(checkColums(board, 4, 4)); // false
console.log(checkRows(board, 4, 4)); // true
&#13;