Я пытаюсь сделать текстовое приключение, которое будет выводить правильный оператор журнала консоли на основе определенного ввода. Я хочу, чтобы, если гоблин нанесет достаточно урона от атаки, чтобы защита игрока была меньше 0, журнал консоли распечатал «Гоблин нанес» x количество «ущерба!». Вот мой список переменных в верхней части кода:
//player stats
var atk= 1;
var def= 1;
var hp= 10;
var mp= 0;
var block= 1;
var magic= 0;
//goblin stats
var gobAtk= [3,4,5];
var gobDef= 1;
var gobHp= 5;
var gobMagDef= 0;
var rand= Math.floor(Math.random()* gobAtk.length);
Внизу моего кода вызывается конкретное условие if/else до тех пор, пока здоровье гоблина (var gobHp) не упадет до нуля после того, как игрок атакует гоблина в предыдущем разделе кода. Вот:
else {
def-=rand;
if(def<0) {
hp-=Math.abs(rand);
console.log("The Goblin did"+ " "+ Math.abs(rand)+ " "+ "Damage!");
if(hp<=0) {
console.log("The Goblin defeated you! You died");
console.log("Game Over.");
}
}
else {
console.log("The Goblin did 0 damage!");
}
}
Но независимо от того, сколько раз я запускаю код, журнал консоли всегда печатает «Гоблин нанес 0 повреждений!» даже если атака гоблина минус защита игрока меньше 0. Если защита игрока меньше 0, журнал консоли должен распечатать правильное количество урона.
console.log(rand)
- person DarkBee   schedule 02.11.2015def
никогда не будет< 0
- person DarkBee   schedule 02.11.2015rand
равен 0 или 1?1 - 1= 0
. 0 не ‹ 0 - person DarkBee   schedule 02.11.2015Math.random()
генерирует значение (с плавающей запятой) от 0 до 1, которое вы умножаете на длину вашего массива. Пол округлит это.<0.5
становится 0, иначе1
- person DarkBee   schedule 02.11.2015