Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачка (простая игровая программа) 
:(
    Опции темы
mr.Anderson
Дата 3.7.2005, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Задачка такая: программа загадывает число от 1 до 5 (каждый раз новое) и выдает пользователю вопрос о том, что было загадано. При угадывании пользователем загаданного числа выдается сообщение "ПРАВИЛЬНО!". Также учесть возможность указания пользователем числа, меньшего или большего, чем загаданное.
Я пишу:
Код

<script language="javascript">
function question()
{
var now=new Date();
var num=now.getSeconds()%5;
num=num+1;
var user=prompt("Какое число было загадано? Введите цифру от 1 до 5.");
var answer="";
if(num==user) {answer="ПРАВИЛЬНО!";}
if(num<user) {answer="Было загадано меньшее число, чем вы указали.";}
if(num>user) {answer="Было загадано большее число, чем указанное вами.";}
if(user>5 || user<1) {answer="Это либо не число, либо оно не находится в диапазоне от 1 до 5.";}
alert(answer);
}
</script>

Ну, и код активации:
Код

<input type="submit" onClick="question()">

Однако, скрипт работает неправильно. smile В смысле, строчка
Код

if(user>5 || user<1) {answer="Это либо не число, либо оно не находится в диапазоне от 1 до 5.";

не работает, точнее работает как-то не так...
Прошу подправить скрипт!
И еще вопрос: как эту же задачу выполнить, распихав код по двум функциям - одна функция - генерация числа, вторая - все остальное.

Это сообщение отредактировал(а) sim7 - 3.7.2005, 12:12


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Black
Дата 3.7.2005, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Вот я бы делал так:

Код

<!-- Над страницей химичил PHP-DIRECTOR -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>.: УГАДАЙ ЧИСЛО :.</title>
<script type='text/javascript'>
function game()
{
  // формируем случайное число
  var num = Math.round(Math.random()*6);
  // числа 6 и 0 созданы для уравновешивания выдаваемых
  // генератором - случайных чисел
  if(num==0) { num++; }
  if(num==6) { num--; }
  // запрос пользователю
  var user = prompt("Какое число было загадано? Введите цифру от 1 до 5.");
  // проверка данных
  if(!/^[12345]{1}$/.test(user)) { alert('Это либо не число, либо оно не находится в диапазоне от 1 до 5'); return false; }
  // формируем ответ
  if( num == user ) { alert('Вы угадали задуманное число. Это действительно '+num); return true; }
  if( num < user ) { alert('Было загадано меньшее число, чем вы указали. Задуманное число '+num); return true; }
  if( num > user ) { alert('Было загадано большее число, чем указанное вами. Задуманное число '+num); return true; }
}
</script>
</head>

<body>

<button onclick='game()'>Начать игру</button>

</body>
</html>



--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 3.7.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(sim7 @ 3.7.2005, 11:11)
точнее работает как-то не так..

Угу, так как условие true при любом раскладе, попробуй заменить ИЛИ на И smile
Естественно что бы диапазон включал 1 и 5, то нужно использовать операторы <= и =>

PHP-DIRECTOR, я вижу тебе нравяться реги... smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black
Дата 3.7.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Цитата
PHP-DIRECTOR, я вижу тебе нравяться реги...

Sardar, ага smile

Кстати, никогда на регах в JavaScript'e не экономил. Если для серверного скрипта, где есть большие нагрузки на сервер скорость регов значительна и желательно их избегать, то для клиентских машин думаю нагрузки никакой нет, если я в JavaScript'е заиспользую пару раз регулярные выражения. Ведь они так удобны и мощны. С ними меня никто не обманет smile

Код

if(user>5 || user<1)

а если в переменной user будет строка smile тогда начнутся глюки.



--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 4.7.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(PHP @ 3.7.2005, 21:02)
а если в переменной user будет строка smile тогда начнутся глюки.

Ну почему же глюки, попробуй smile


Цитата(PHP @ 3.7.2005, 21:02)
если я в JavaScript'е заиспользую пару раз регулярные выражения.

Дело не в нагрузке. Идея регулярных выражений была совсем не для того, что бы переводить числа в строки, а затем выполнять такие операции, которые простыми арифметическими операторами выполяеться на ура. Это как чувство, мол можно вилкой есть суп, это получиться за время немногим большим чем если это делать ложкой. Но когда ты ешь суп вилкой, все начинают улыбаться smile smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
mr.Anderson
Дата 8.7.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Цитата
Угу, так как условие true при любом раскладе, попробуй заменить ИЛИ на И smile

Как это? Ведь тогда получится, что должно быть больше пяти и меньше одного одновременно.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Sardar
Дата 8.7.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(sim7 @ 8.7.2005, 15:11)
Как это? Ведь тогда получится, что должно быть больше пяти и меньше одного одновременно.

Хотел сказать "прочти в слух", сам прочёл и присел... smile Позор мне, на булевой алгебре провалился smile

Так что же там не правильно? Браузер ругаеться?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
ALeXandrK
Дата 27.6.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Чтобы получить псевдослучайное число в каком то диапозоне:
НужноеЧисло = ЛеваяГраница+(ПраваяГраница-ЛеваяГраница)*СлучайноеЧисло.

Таким образом, чтобы убрать ненужные условия приходим к форме вида:
Код

var num = Math.round(1+(5-1)*Math.random());


Цитата

  // формируем случайное число
  var num = Math.round(Math.random()*6);
  // числа 6 и 0 созданы для уравновешивания выдаваемых
  // генератором - случайных чисел
  if(num==0) { num++; }
  if(num==6) { num--; }


Интересно, а что уравновешивать?! Таким образом только нарушается 
нормальное случайное распределение и числа 1 и 5 будут встречаться
чаще остальных - а это уже не случайность, а закономерность....

Это сообщение отредактировал(а) ALeXandrK - 27.6.2007, 21:18


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
ksnk
Дата 27.6.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Откуда такая цитата?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Zeroglif
Дата 27.6.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



ALeXandrK, 

Math.round мешает нормальному случайному распределению, оно получается ненормальным (это так... к слову, не вдаваясь в суть этого топика 2005-ого года).
PM MAIL WWW   Вверх
WIPS
Дата 29.6.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 2
Всего: 8



Zeroglif, по моему Math.round дает равномерное распределение. Нормальное получить чуть сложнее, например так.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0630 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.