2016-11-14 2 views
0

Я создаю игру тральщика, и я ищу, чтобы установить количество флагов, которые пользователь использует на основе количества строк в игровой доске. У меня эти две вещи в разных модулях, и я не уверен, почему я не могу заставить модули правильно общаться. Очевидно, я делаю что-то неправильно, но я не могу понять, что.Изменение переменной в другом модуле

var gameboard = (function() { 

var initialize = function(rows, cols) { 
    var flags = 0; 
    for(var x = 0; x < rows; x++) { 
      flags++; 
      for(var y = 0; y < cols; y++) { 
       var unit = $("<div class='unit'></div>"); 
       unit.width(($('#gameboard').width()/cols) - 2).height(($('#gameboard').height()/rows) - 2).appendTo('#gameboard'); 
      } 
     } 

    addId(rows, cols); 
    gatherMines(rows); 
    setFlags(flags); 
}; 

var setFlags = function(number) { 
    gamePlay.flagCount = number; 
} 

return { 
    initialize: initialize, 
    flags: setFlags 
}; 

}()); 

var gamePlay = (function() { 

var flagCount; 

return { 
    go: go, 
    flagCount: flagCount 
}; 

}()); 

ответ

0

gamePlay Рассмотрим объект:

var Gameplay = function(flagCount) { 
    this.flagCount = flagCount; 
}; 

Теперь вы можете просто создать экземпляр GamePlay объекта в вашем объекте GameBoard. Например внутри вашего метода initialize:

var gp = {}; 

var initialize = function(){ 
    gp = new Gameplay(0); 
} 

Теперь вы можете использовать gp где угодно, до тех пор, как initialize() была выполнена.

+0

Спасибо за ваш ответ. Так или иначе, чтобы напрямую установить количество флагов из моего модуля игрового поля? У меня есть другая функция в модуле gamePlay, которую я опустил для краткости, и по какой-то причине это решение меня смутило. –

+0

. Я добавил свой комментарий под своим ответом для дополнительной удобочитаемости. – Koen

Смежные вопросы