尝试更新Javascript对象中的数组:

时间:2019-10-02 08:05:34

标签: javascript arrays object

我目前正在使用一个名为'gameStateArray'的数组来存储客户端和服务器之间发生的多个游戏的游戏状态。

游戏状态是一个对象,如下所示:

var currentGameState = {
    playerOne: "",
    playerTwo: "",
    blackSoldiers: 0,
    whiteSoldiers: 0,
    isMillBlack: false,
    isMillWhite: false,
    numTurns: 1,
    fillColour: "",
    whiteLastThree:  false,
    blackLastThree:  false,
    positionMatrix: Array(7),
    referenceMatrix: Array(7)
}

我有以下这段代码遍历数组以为用户提取正确的游戏状态:

for(var i = 0; i < gameStateArray.length; i ++){
     if(gameStateArray[i].playerOne.includes(gameNumber)){
          console.log("SERVER: Element number " + i + " contains " + gameNumber);
          console.log("SERVER: currently setting gamestate to gamestatearray" + i);
          gameState = gameStateArray[i];
     }
}

如果我想更新numTurns,只需输入gameState.numTurns = 3;。例如。这可以使每个游戏状态保持独立,因为数组的每个元素都是不同的游戏状态对象。我遇到的问题是当我尝试更新positionMatrix或referenceMatrix时。

我正在使用以下代码为其创建值:

for (var i = 0; i < 7; i++) {
     gameState.referenceMatrix[i] = Array(7);
     gameState.positionMatrix[i] = Array(7);
}

for (var j = 0; j < 7; j++) {
     for (var k = 0; k < 7; k++) {
          // make diagonal buttons, boundary and centre equal to zero
          if ((j == 3) || (k == 3) || (j == k) || (j + k == 6)) {
               gameState.referenceMatrix[j][k] = 0;
               gameState.positionMatrix[j][k] = 0;
          }
          else {
               gameState.referenceMatrix[j][k] = -1;
               gameState.positionMatrix[j][k] = -1;
          }
     }
}
// make centre -1
gameState.referenceMatrix[3][3] = -1;
gameState.positionMatrix[3][3] = -1;

每次创建新的游戏状态时,都会填充位置和参考矩阵。因此,当一个游戏开始时,我将使用在gameStateArray [0]和gameStateArray [0] .positionMatrix上找到的gameState(因为上面的代码尚未运行)为空,但是当第二个游戏由于某种原因而开始时,即gameStateArray [1]。当运行上述代码时,就会填充positionMatrix,并且它还会覆盖gameStateArray [0] .positionMatrix(稍后会通过不同的代码进行更改)。

我不确定为什么我可以更改.numTurns和gameState的所有其他参数而不在所有数组中进行更改,但是我不能在不影响所有游戏状态的情况下更改positionMatrix数组吗? / p>

任何帮助将不胜感激!

0 个答案:

没有答案