gpt4 book ai didi

javascript - 游戏开发 JS 将对象存储到数组

转载 作者:行者123 更新时间:2023-11-29 16:31:33 26 4
gpt4 key购买 nike

我使用多种语言,并且正在扩展我在 JS(不是 jquery)方面的经验。虽然这适用于我使用的许多语言,但我原以为这将是一个简单的程序,但我却被数组/对象问题难住了。我可能会从错误的方向攻击它。

简而言之,这是一个简单的游戏(我正在学习 JS 中的对象和数组,并认为这将是一个很好的挑战)。由 15 个小怪组成,每个小怪每波攻击 10 次,每波最多有 5 个不同的获胜标准。一旦浪潮完成,它就会移动到下一个生物,然后重复。

对于其他语言,甚至 PHP,您可以执行类似于下面的伪代码的操作:

aMob = record {
id: integer,
name: string
hp: integer
etc....
}
mob[15]: aMob

现在我有一个包含 15 个 aMobs 的数组

所以你可以使用 mobCnt = 0并获取 mob[mobCnt].name

我可以用 JS 做到这一点。非常简单的数组,但这就是它变得复杂的地方(对我来说)

我观看并阅读了一些教程并了解了对象。这似乎是正确的方法,但我可以创建对象(样板?),但随后我无法创建每个生物与 10 个波相关联的多维数组,并且每个波都有 5 个需要满足的项目。 3D 数组?

这个片段在下面有点起作用。但编码非常困惑。当我点击攻击按钮时,问题就出现了,mobhp不会减少,所以我把那个var设置为全局的。但修改代码后,它就变得越来越大。所以这必须被废弃。这是我得到的唯一代码,所以至少做一些事情,但我觉得对象/数组方法会更好。

function setBattleRoundNFO(currMobCnt, currWaveCnt  ) {
switch(currMobCnt) {
case 0: mobName = "Rodents";
// mob = 100;
switch(currWaveCnt){
case 0: weaponId = 1; armorId = 0; powerMoveId = 3; break; // weapon, armor and powermove skill
case 1: weaponId = 4; armorId = 5; powerMoveId = 6; break;
}
break;
case 1: mobName = "Wolf Pack";
mobHp *= 1.15;
switch(currWaveCnt){
case 0: weaponId = 7; armorId = 8; powerMoveId = 9; break; // weapon, armor and powermove skill
case 1: weaponId = 10; armorId = 11; powerMoveId = 12; break;
}
break;

}
}

理想情况下,我想要发生的是它显示(通过跟踪变量)显示

mob[1].wave[1].hp、装甲、武器、等级...等.

本场战斗获胜后,进入下一波

mob[1].wave[2].hp、盔甲、武器、等级..等等

我在 pascal、qb64 和 php 上尝试过,工作正常,但我想在 JS 中使用它,而数组部分难倒了我。

谢谢

最佳答案

如果我理解正确的话,你想要多个小怪。每个都有多个波浪。每波都有多个 Angular 色。每个 Angular 色都有属性。

听起来您想要数组和对象的混合。

const mob = [
{ wave: [{ weapon: "foo", hp: 10 }, { weapon: "bar", hp: 20 }] },
{ wave: [{ weapon: "baz", hp: 30 }, { weapon: "quux", hp: 40 }] }
];

使用此结构,您可以访问上面所示的数据:

mob[1].wave[1].hp // 40

mob[0].wave[0].weapon // foo

关于javascript - 游戏开发 JS 将对象存储到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com