-2

好的,所以我和一个朋友正在一起做一个JS游戏。这是一个上帝游戏,用户使用资源建造房屋和其他建筑物。它处于非常早期的开发阶段!

我使用变量作为网格参考,因此可以将它们设置为某个建筑物。例如:

var OneOne = none

所以网格看起来像这样:

  • 一一一二一三
  • 二一,二二,二三
  • 三一,三二,三三

我的问题是在构建阶段的某个地方,我使用了一个名为的函数Build(type, loc),用于将建筑物添加到地图中。我使用 switch 语句来执行此操作,该语句查看loc参数并将相应的网格引用设置为建筑物的值。所以如果this.loc === OneOne,那么OneOne = this.type

此脚本的预期结果是将 OneOne 设置为 WoodHut。

在理论上,如果你要逐行打印网格,刚刚完成Build(WoodHut, OneOne),你应该得到类似的东西:

  • 木屋,没有,没有
  • 没有,没有,没有
  • 没有,没有,没有

但这行不通!我真的无法弄清楚为什么这不起作用......我得到的真正结果是:

  • 没有,没有,没有
  • 没有,没有,没有
  • 没有,没有,没有

这是我的源代码:JS

以及我用来运行脚本和函数的 HTML:HTML

请阅读它们并发现我的错误!一个提示或教程将不胜感激。提前致谢!

4

1 回答 1

0
var OneOne = none;
var OneTwo = none;
var OneThree = none;
var OneFour = none;
var OneFive = none;

var TwoOne = none;
var TwoTwo = none;
var TwoThree = none;
var TwoFour = none;
var TwoFive = none;

var ThreeOne = none;
var ThreeTwo = none;
var ThreeThree = TownHall;
var ThreeFour = none;
var ThreeFive = none;

var FourOne = none;
var FourTwo = none;
var FourThree = none;
var FourFour = none;
var FourFive = none;

var FiveOne = none;
var FiveTwo = none;
var FiveThree = none;
var FiveFour = none;
var OneFive = none;

不要那样做。请改用数组。以下是使用数组数组执行此操作的方法;例如矩阵。

var tiles = [];
var rowCount = 5; // put as many as you like
var columnCount = 5; // put as many as you like

// Assign the none string to all tiles.
for (var r = 0; r < rowCount; r++)
{
    tiles[r] = [];
    for (var c = 0; c < columnCount; c++)
    {
        var currentRow = tiles[r];
        currentRow[c] = "--none--";
    }
}

// Now access FourTwo (row 4, column 2). Remember arrays are 0-based.
console.log(tiles[3][1]);

// Assign something to FiveThree
tiles[4][2] = "WoodHut"
于 2013-06-05T17:46:35.333 回答