Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.04.2013, 20:22
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 10

Угадай число
Привет! Я начал изучать 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>

Последний раз редактировалось GTG, 19.04.2013 в 20:25.
Ответить с цитированием
  #2 (permalink)  
Старый 19.04.2013, 20:25
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 10

UPD:
Проблема решена. Не нашел, как удалить тему.
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2013, 20:34
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Сообщение от GTG
Не нашел, как удалить тему.
привыкай бро
Ответить с цитированием
  #4 (permalink)  
Старый 19.04.2013, 22:05
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 10

Хорошо. Собственно, всё равно возник вопрос по данному скрипту.
Дело в том, что Math.random работает как-то не так...
Я использую вот что:
var x = Math.floor(Math.random() * (max-min+1) + max);

но при, допустим, параметрах min = 10, max = 20 генерируемое число x получается равным 7. Как такое может быть?

Последний раз редактировалось GTG, 19.04.2013 в 22:15.
Ответить с цитированием
  #5 (permalink)  
Старый 19.04.2013, 22:54
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Во-первых,
var x = Math.floor(Math.random() * (max-min+1) + min);
а во-вторых, что-то вы напутали, т.к. по-вашему генерятся числа больше не менше 20
Ответить с цитированием
  #6 (permalink)  
Старый 20.04.2013, 07:41
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 10

Сообщение от rgl Посмотреть сообщение
Во-первых,
var x = Math.floor(Math.random() * (max-min+1) + min);
а во-вторых, что-то вы напутали, т.к. по-вашему генерятся числа больше не менше 20
Прошу прощения, +min, да. Генерируются числа меньше min. Проверено.
Если же я напишу даже var x = Math.floor(Math.random() * (max-min+1) + max), то генерируются числа меньше 20! А именно только что сгенерировалось 10!
Ответить с цитированием
  #7 (permalink)  
Старый 21.04.2013, 14:54
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 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 с возможностью контактирования с пользователем во время выполнения?

Последний раз редактировалось GTG, 21.04.2013 в 15:14.
Ответить с цитированием
  #8 (permalink)  
Старый 21.04.2013, 15:39
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от GTG
Однако, если задать их таким образом:
var min = prompt("Enter min", "");
var max = prompt("Enter max", "");

то генерируемое число может получиться меньше min.
В чем проблема?
Потому что нужно делать так
var min = *!*+*/!*prompt("Enter min", "");
var max = *!*+*/!*prompt("Enter max", "");
alert([typeof min, typeof max]);

Так нужно делать, чтобы преобразовать введенную пользователем строку в число
Сообщение от GTG
P.S. Есть ли замена циклу while с возможностью контактирования с пользователем во время выполнения?
Цикл for есть. Или что вы имеете ввиду?
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #9 (permalink)  
Старый 21.04.2013, 15:56
GTG GTG вне форума
Интересующийся
Отправить личное сообщение для GTG Посмотреть профиль Найти все сообщения от GTG
 
Регистрация: 19.04.2013
Сообщений: 10

Сообщение от Hekumok Посмотреть сообщение
Потому что нужно делать так
var min = *!*+*/!*prompt("Enter min", "");
var max = *!*+*/!*prompt("Enter max", "");
alert([typeof min, typeof max]);

Так нужно делать, чтобы преобразовать введенную пользователем строку в число
Спасибо, все уяснил.

А насчёт цикла for, я думаю, это немного не то, что нужно. В цикле у меня переменная score может как увеличиваться, так и уменьшаться. Цикл же необходимо закончить, как только score становится >= 100. Собственно, с for не очень соображаю, как это можно реализовать...
Ответить с цитированием
  #10 (permalink)  
Старый 21.04.2013, 16:07
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

GTG, а, ну в вашем случае лучше с while
__________________
★ ²º¹³ ☆
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить пробелы в число после рандома RuSS_lan Общие вопросы Javascript 3 05.01.2013 18:05
определить число целое или нет dadli Общие вопросы Javascript 29 14.06.2012 22:59
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13
Округлить целое число glebovsky Общие вопросы Javascript 5 12.02.2012 17:38
Разбить число на миссив, как ? Bogdan808 Общие вопросы Javascript 20 01.09.2010 18:19