我正在用javascript构建一个空闲的游戏。
这是一个你经营面包店的游戏。
面包房的资源在对象“mainobj”中表示。
let mainObj = {
"Money": 100,
"Resources": {
"Milk": 10,
"Eggs": 10,
"Flour": 10,
"Water": 10,
"Sugar": 10
},
"Employees": {
"Bakers": 1,
"Cooks": 0,
"Servers": 0,
"Farmers": 0
},
"Inventory": {
"Cake": 0,
"Cookies": 0
}
}
烘焙项目(如蛋糕或饼干)的相关成本存储在数组“bakeinfo”中。
let bakeInfo = [{
"Name": "Cake",
"Milk": 1,
"Eggs": 2,
"Flour": 1
}, {
"Name": "Cookies",
"Eggs": 1,
"Flour": 1
}]
我想写一个函数,从 bakeInfo
,例如用于烘焙蛋糕(1份牛奶、2份鸡蛋、1份面粉)检查 mainObj
对于所需的成分(如果不够,则抛出一个错误),如果每种成分都足够,则会将资源中的成分减少 bakeInfo
,然后将适当的项目(蛋糕/饼干)添加到 mainObj
库存
我尝试了几种不同的方法,几乎每种成分都有一个单独的功能,这对我来说效率非常低。
此外,一些将要烘焙的食物省略了一些成分(饼干不需要牛奶)。因此,如果函数选中此项/仅从 mainObj
这将是理想的库存,事实上,这是必要的。
如果有人能给我指出正确的方向那就太好了。
4条答案
按热度按时间pn9klfpd1#
上面marko的解决方案是一次添加一个项目。但是,如果您希望一次检查多个项目,并且如果没有足够的成分容纳所有项目,则会出现错误,此解决方案可能会更好:
2skhul332#
这应该起作用:
如果函数成功,则返回true;如果资源不足,则返回false。
您可以这样使用它:
anauzrmj3#
和
makeItem
在下面的函数中,您可以使用try-catch
然后扔一个Error
无法满足所需资源的最低数量时。unhi4e5o4#
下面是我将如何着手的。
用法:
测试:
改进意见:
改变
bake
从…起function (name)
到function (name, amount)
. 你不需要任何额外的线或循环。测试当你打电话时会发生什么
bake
以否定的语气amount
.测试当您关闭
amount
参数。测试当你尝试烘焙一个蛋糕时会发生什么
cake
而不是Cake
.使函数在所有这些情况下都能正常运行。