JavaScript - 有没有办法以数组形式存储“var x === var y”和“var c === var”之类的东西

时间:2017-11-27 12:14:15

标签: javascript jquery

所以我基本上为我的tic tac toe游戏制作了一些逻辑代码,我想写下所有意味着有人赢了的状态。

例如;

cell1.innerHTML = cell2.innerHTML = cell3.innerHTML //as one group

因此,当单元格1,2和3中的所有单元格包含相同的值时,在这种情况下为X或O,它将变为真,并向用户发出警报。我希望将所有可能的单元格组合(等于结束游戏)存储在类似于数组的数组中。如果我碰巧用我的超级菜鸟问题惹恼了你,或者如果没有这样的方式,我很抱歉,我对编程非常陌生。提前谢谢!

P.S,我已经开始学习jQuery,所以如果jQuery存在这样的解决方案,我将非常乐意学习它:)。

2 个答案:

答案 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;
}