2016-05-07 3 views
0

Я сделал случайную игру с угадыванием чисел, в которой вы можете определить максимальное значение и минимальное значение. Я дважды проверял весь код, но не могу найти решение, почему он не будет работать. Я сделал этот скрипт связанным с HTML-файлом, который объясняет часть document.getElementById("randNum").innerHTML. Я также хочу сказать, что я очень новичок в кодировании, поэтому я мог бы пропустить что-то простое. В любом случае, вот мой код.Что не так с этой случайной галочкой?

var max = prompt("Max guessing number?"); 

if (max <= 2) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
} else { 

    var min = prompt("What's the smallest number you can guess?"); 
    if (min >= (max - 1) || min <= 0) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else { 

    number = Math.floor(Math.random() * (max - min + 1) + min); 

    guess = prompt("What's your guess?"); 

    if (guess > max || guess < min) { 

     document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else if (guess == number) { 

     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 

    } else { 

     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 

    } 
    } 
} 

EDIT: Я изменил способ работы генератора случайных чисел, но я все еще получаю сообщение об ошибке. И добавить больше деталей, страница говорит Неверная запись

+0

Вы получаете ошибки в консоли браузера? – Andy

ответ

0

Два вопроса:

Тип данных, возвращаемый prompt является строкой, поэтому расчеты могут пойти не так, если вы явно не преобразовать его в число. Вы можете сделать это путем применения унитарного + оператора, как +prompt('....');

Во-вторых, способ получить случайные числа между мин и макс должны быть разными. Изменить это:

number = Math.floor((Math.random() * max) + min); 

к:

number = Math.floor(Math.random() * (max - min + 1) + min); 

Исправленный код:

var max = +prompt("Max guessing number?"); 
 

 
if (max <= 2) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 
} else { 
 

 
    var min = +prompt("Wat is het kleinste nummer dat je kan raden?"); 
 
    if (min >= (max - 1) || min <= 0) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else { 
 

 
    number = Math.floor(Math.random() * (max - min + 1)) + min; 
 
    console.log(min, max, number, (max - min + 1)); 
 

 
    guess = +prompt("What's your guess?"); 
 

 
    if (guess > max || guess < min) { 
 

 
     document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else if (guess == number) { 
 

 
     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 
 

 
    } else { 
 

 
     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 
 

 
    } 
 
    } 
 
}
<div id="randNum" ></div>

0

Это, кажется, действительно неправильно для меня:

number = Math.floor((Math.random() * max) + min); 

Итак, вы сообщаете генератору случайных чисел, чтобы сгенерировать число, которое является максимальным max, и добавить с ним значение min. Скажем, если я дам два числа:

15, 18 

И если Math.random() * max равно 17, то она становится:

17 + 15 = 32 

Вам может понадобиться сделать так:

number = Math.floor(Math.random() * (max - min + 1) + min); 

Вышеприведенный код гарантирует, что случайное число не больше разницы между max и min, а при добавлении min со значением, мы получаем случайное число, генерируемое между диапазоном.

Это будет гарантировать, что число находится между max и min.

Смежные вопросы