Я занимаюсь разработкой игры javascript и изменяю значения из файла JSON через al oop. Однако l oop иногда заменяет значения, которые он должен изменить, на «NaN» и получает случайную букву из префиксного слова массива. Я пытался отлаживать значения и вводить фиксированные значения существ, но это не сделало меня мудрее.
Код работает в ПЕРВОЕ ВРЕМЯ RAN в JSFiddle: https://jsfiddle.net/ezwad5mL/2/, но каждый раз, когда вы запускаете его, он перезаписывает значения в l oop с помощью NaN и буквы. Я думаю, это потому, что функция random_int
нуждается в 2 значениях, но она вводит только 1 во второй раз, когда вы ее запускаете, что как-то совпадает со значением предыдущего ввода (которое она изменила во втором для l oop). Я не понимаю, как этот код не сбрасывает storedDungeon
, если он срабатывает во второй раз.
Я понимаю проблему, я думаю, но я понятия не имею, что не так с тем, что я написал, и почему все в порядке с первого раза, но облажается во второй раз.
function random_item(items){
return items[Math.floor(Math.random()*items.length)];
}
function random_int(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
var storedDungeon = []
const jsonCreatures = {
"easy": [
{ "name": "Scorchbird", "hp": [6,13], "prefix": ["Weak", "Small", "Young", "Wild"],
"damage": [1,5], "droprateCommon": [0,60], "droprateRare": [70, 90]},
{ "name": "Reanimated Corpse", "hp": [8,15], "prefix": ["Weak", "Festering"], "damage":
[3,5], "droprateCommon": [0,40], "droprateRare": [50, 80]}
]}
var randNumber = 2
for (let i = 0; i < randNumber; i++) {
let randomObject = random_item(jsonCreatures.easy)
storedDungeon.push(randomObject)
}
for (let o = 0; o < storedDungeon.length; o++) {
storedDungeon[o].hp = random_int(storedDungeon[o].hp[0], storedDungeon[o].hp[1])
storedDungeon[o].damage = random_int(storedDungeon[o].damage[0],storedDungeon[o].damage[1])
storedDungeon[o].prefix = random_item(storedDungeon[o].prefix)
}
console.log(storedDungeon)