Угадай число
Привет! Я начал изучать JS только вчера, вот попытался написать простой скрипт "Угадай число". Однако, проблема в том, что он даже не начинается... Проверял - не понял, в чем может быть дело (аналогичные скрипты работали, вроде).
<script language="JavaScript"> function randomNumber(m,n) { return Math.random() * (n-m+1) + m } alert("Добро пожаловать в шоу \"Угадай число!\""); var m = parseInt(prompt("Введите нижнюю границу диапазона чисел", "")); var n = parseInt(prompt("Введите верхнюю границу диапазона чисел", "")); var number = randomNumber(m,n); if (confirm("Число сгенерировано. Хотите попробовать его отгадать?")) { if (prompt("Введите число", "")==number) { if ((m-n)>=10 && (m-n)<=100) alert("Верно! Вы получаете 10 очков!"); if((m-n)>100) alert("Верно! Вы получаете 100 очков!"); if ((m-n)<10) alert("Верно! Вы получаете 1 очко!"); } else alert("Неверно! Вы теряете 10 очков!"); } else { if (confirm("Вы прощаетесь с нами?")) window.close(); } </script> |
UPD:
Проблема решена. Не нашел, как удалить тему. |
Цитата:
|
Хорошо. Собственно, всё равно возник вопрос по данному скрипту.
Дело в том, что Math.random работает как-то не так... Я использую вот что: var x = Math.floor(Math.random() * (max-min+1) + max); но при, допустим, параметрах min = 10, max = 20 генерируемое число x получается равным 7. Как такое может быть? |
Во-первых,
var x = Math.floor(Math.random() * (max-min+1) + min); а во-вторых, что-то вы напутали, т.к. по-вашему генерятся числа больше не менше 20 |
Цитата:
Если же я напишу даже var x = Math.floor(Math.random() * (max-min+1) + max), то генерируются числа меньше 20! А именно только что сгенерировалось 10! |
В общем, было обнаружено следующее:
Если в явном виде инициализировать переменные max и min, например, так: var min = 10; var max = 25; то число генерируется правильно - в диапазоне от min до max. Однако, если задать их таким образом: var min = prompt("Enter min", ""); var max = prompt("Enter max", ""); то генерируемое число может получиться меньше min. В чем проблема? P.S. Есть ли замена циклу while с возможностью контактирования с пользователем во время выполнения? |
Цитата:
var min = *!*+*/!*prompt("Enter min", ""); var max = *!*+*/!*prompt("Enter max", ""); alert([typeof min, typeof max]); Так нужно делать, чтобы преобразовать введенную пользователем строку в число Цитата:
|
Цитата:
А насчёт цикла for, я думаю, это немного не то, что нужно. В цикле у меня переменная score может как увеличиваться, так и уменьшаться. Цикл же необходимо закончить, как только score становится >= 100. Собственно, с for не очень соображаю, как это можно реализовать... |
GTG, а, ну в вашем случае лучше с while
|
Часовой пояс GMT +3, время: 23:10. |