2016-11-14 92 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对象的实例。例如您initialize方法内:

var gp = {}; 

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

您现在可以使用gp任何地方,只要initialize()已被执行。

+0

感谢您的回复。无论如何,直接从我的游戏板模块设置标志计数?我的游戏播放模块中还有其他功能,为简洁起见我省略了,无论出于何种原因,此解决方案让我感到困惑 –

+0

我在我的答案下添加了我的评论以提高可读性。 – Koen