【问题标题】:JavaScript Functions and Switch statements. Can Somebody guide me on this? [closed]JavaScript 函数和 Switch 语句。有人可以指导我吗? [关闭]
【发布时间】:2013-06-05 17:27:09
【问题描述】:

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

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

var OneOne = none

所以网格看起来像这样:

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

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

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

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

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

但这行不通!我真的不明白为什么这不起作用...... 我得到的真实结果是:

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

这是我的源代码:JS

还有我用来运行脚本和函数的 HTML:HTML

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

【问题讨论】:

  • 您有什么具体问题吗?提示:按照 Tomás 的建议,使用数组代替变量。
  • 这些没有回答我的问题,我的问题是在构建函数中,而不是变量...
  • @Corwen 甚至没有人知道你的问题是什么。您需要提供实际所需的输出,不要让人们追逐您的代码等。
  • 好的,亚当。你能扩展一下吗?或者给我发一个链接到某种教程?谢谢

标签: javascript function switch-statement


【解决方案1】:
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"

【讨论】:

  • 谢谢,我试试看!
  • 你需要将tiles[r] = []初始化为'for (var r'循环的第一条语句。
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2023-03-17
  • 2018-06-21
相关资源
最近更新 更多