所以我基本上为我的tic tac toe游戏制作了一些逻辑代码,我想写下所有意味着有人赢了的状态。
例如;
cell1.innerHTML = cell2.innerHTML = cell3.innerHTML //as one group
因此,当单元格1,2和3中的所有单元格包含相同的值时,在这种情况下为X或O,它将变为真,并向用户发出警报。我希望将所有可能的单元格组合(等于结束游戏)存储在类似于数组的数组中。如果我碰巧用我的超级菜鸟问题惹恼了你,或者如果没有这样的方式,我很抱歉,我对编程非常陌生。提前谢谢!
P.S,我已经开始学习jQuery,所以如果jQuery存在这样的解决方案,我将非常乐意学习它:)。
答案 0 :(得分:0)
可能将条件存储为数组中的坐标。然后遍历数组以查找其中一个是否匹配。
var winconditions = [
[{x: 1, y: 1}, {x:2, y:1,}, {x:3, y:1}], //top row
...
];
for(var i = 0; i < windconditions; i++){ //loop every condition
var conditionMatches = true; //will stay true if every coordinate matched
for(var y = 0; y < winconditions[i]; y++){ //loop every coordinate of a condition
var coordinate = winconditions[i][y];
if(!isCoordinateMarked(coordinate){ //some check if coordinate was set by a player
conditionMatches = false;
}
}
if(conditionMatches){
//you found a match!
}
}
答案 1 :(得分:0)
也许这会对你有帮助,
我设置了一个数组(矩阵)数组,其中包含了获胜的所有可能性。
并且gameBoard也将是一个矩阵,包含来自html的所有元素。
var checkWinner = function(gameBoard) {
const lines = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
];
for (let i = 0; i < lines.length; i++) {
const [a, b, c] = lines[i]; // set values from lines[i] to var a, b, c.
// checking if the first element no null, then check if all equils
if (gameBoard[a] && gameBoard[a] === gameBoard[b] && gameBoard[a] === gameBoard[c]) {
return "win";
}
}
return null;
}