Изображение задачи: http://puu.sh/5spfQ.pngОдд ошибка в моем коде яваскрипта
Мой первый вопрос здесь. Надеюсь, я могу объяснить это в приличной степени, чтобы дать вам представление о том, что я пытаюсь сделать.
Я работаю над маленькой javascript-игрой, где единственной целью является заработать деньги. Одним из способов заработать деньги является наем работников. Однако есть проблема. Например, у нас есть Рабочий A и Рабочий B. По какой-то нечетной причине, когда Рабочий B миновал что-то, Работник А также получает добытую руду (так что оба, похоже, всегда имеют такое же количество руды). Я не могу понять, почему это так; они не должны получать друг друга.
Примечание:> нанятые < работники хранятся в переменной «занято».
Забавная часть, код:
* Эта функция заполняет заполнителей к используемой переменной для каждого возможного работника по найму. *
//add "placeholder data" to prevent future undefined/errors
//and makes future modification easier, specially in workerMain()
var o = [];
for(ore in ores){o[ore] = 0;}
for(w in workers){
employed[w] = [0, o];
}
Таким образом, наша используется переменная может выглядеть вдоль линий:
('шахтер а' => [0, [ 'coal_ore' => 0, 'diamond_ore' => 0] ], 'miner b' => [0, ['coal_ore' => 0, 'diamond_ore' => 0]])
Теперь, когда они наняты, цикл, который запускается каждую секунду, определит, сколько руды, которые они добывали, и он должен поставить добытую руду любого рабочего в соответствующее место.
function workerMain(){
setTimeout(function(){
for(e in employed){
var wObj = workers[e];
var orePerSecond = Math.ceil(wObj.opm/60)*employed[e][0];
var oresMined = generateOres(orePerSecond, wObj.pickaxe);
//add newly mined ore count to worker's ore
for(ore in oresMined){
employed[e][1][ore] += oresMined[ore];
//we aren't storing the ore, so let's go ahead and sell it
money += ores[ore].worth*oresMined[ore];
}
}
updateValues();
workerMain();
}, 1000);
}
Но опять-таки, как-то, если Miner А шахты угольной руды, как-то Miner B будет также получить, что угольную руду.
Надеюсь, что я подробно объяснил свою проблему. Если вы не можете найти проблему в этом коде, он может лежать в пределах этих двойников функций:
Главный рабочий я вижу функцию, называемую значениями обновления, каким-либо образом мы могли бы это увидеть? – Trendy
Вы не должны быть петлевыми массивами с 'for ... in', а регулярным циклом' for'. Также вы забыли объявить все переменные цикла, чтобы они стали неявными глобальными. – elclanrs
'for (руда в рудах)' делает его похожим на 'ore' - это ключ свойства, а' o = [] ', за которым следует' o [ore] ', заставляет его выглядеть так, как вы думаете, массивы являются ассоциативными массивами ...могу ли я ответить, предполагая, что это так? – sqykly