Почему метод на объект возвращает неопределенный - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь вызвать метод walkDown(y,id){} для моего объекта game, и он возвращает неопределенное значение. Подобный метод walkUp(y,id){} работает как задумано. Вот код:

class Game {
    constructor(row,col,players) {
        this.players = players;  
        this.row = row;
        this.col = col;
        this.gameBoard=[];
          for (let i=0; i<row; i++){
            this.gameBoard[i] =[];
              for (let y =0; y<col; y++){
                  this.gameBoard[i][y] = 0;
              }
          }
      }

  placing(id){
    var place = true;
    while(place){
      var y = Math.floor(Math.random()*10);
      var x = Math.floor(Math.random()*10);
      if (this.gameBoard[y][x] === 0){
        this.gameBoard[y][x] = this.players[id];
      place = false;
      } //if finish
    } // while finish
  }// function placing finish



  walkDown(y,id){
    for(var k = 0; k < this.gameBoard.length; k++){
      for(var m = 0; m < this.gameBoard[k].length; m++){
        if(this.gameBoard[k][m]===this.players[id]){
          this.gameBoard[k][m] = 0;
          this.gameBoard[k+y][m]= this.players[id];
        }
      }
    } 
  } 

  walkUp(y,id){
    for(var k = 0; k < this.gameBoard.length; k++){
      for(var m = 0; m < this.gameBoard[k].length; m++){
        if(this.gameBoard[k][m]===this.players[id]){
          this.gameBoard[k][m] = 0;
          this.gameBoard[k-y][m]= this.players[id];
        }
      }
    }
  } 

}// Class Game finish

class Player{
  constructor(id){
  this.id = id;
  }
}

const game = new Game(10,10,[new Player(0), new Player(1)]);
game.placing(0);
game.placing(1);

// game.walkUp(1,0); will work
// game.walkDown(1,0); throws an error

Неопределенное происходит от этой строки кода this.gameBoard[k+y][m]= this.players[id]. Однако, как упоминалось выше, метод walkUp(y,id){} с аналогичной строкой кода this.gameBoard[k-y][m]= this.players[id] представляет требуемый результат.

Что я здесь не так делаю? Ссылка на код https://jsbin.com/kizateh/edit?js,console

...