我目前正在进行闲置游戏并遇到问题。Javascript:for,switch和Math.rand合为一体并且不能正常工作
我正在尝试创建一个函数,它将减少6个变量中的1个(每个代表一种工作类型)的次数。但是,如果这6个变量中的一个变为0,我需要它选择其中的另一个5,并且我无法让它工作。
随着摆弄周围,我得到这样的:
function killWorker(amount){
var job;
for (var i=0;i<amount;i++){
job = Math.floor((Math.random()*6)+1);
switch (job){
case 1:
if(unass_workers>0){
unass_workers -= 1;
}else{
i-=1;
}
case 2:
if(farm_workers>0){
farm_workers -= 1;
}else{
i-=1;
}
break;
case 3:
if(tree_workers>0){
tree_workers -= 1;
}else{
i-=1;
}
break;
case 4:
if(metMine_workers>0){
metMine_workers -= 1;
}else{
i-=1;
}
break;
case 5:
if(golMine_workers>0){
golMine_workers -= 1;
}else{
i-=1;
}
break;
case 6:
if(paper_workers>0){
paper_workers -= 1;
}else{
i-=1;
}
break;
default:
console.log("error: killWorker() didn't work properly");
break;
}
}
}
这工作时,我做了少量的,但是当我增加量高于整个事情坠毁。如果能够更好地发挥作用,我会很乐意彻底改变这个功能,如果这可以帮助获得更简单或更有效的解决方案,我也会使用jquery。
我会努力找到一种方法,不允许你的随机数引用已经为0的工作者。并且可以移除该开关语句的方法(例如将你的工人放在一个对象中并循环它的键) –
一旦类别用完了,你的函数就可能无限循环,并且一旦所有类别的用户都用完了,它肯定会无限循环。我会认为这是发生了什么事。 – Tibos