Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 09.07.2020
Сообщений: 13

Игра "угадай число"

27.08.2020, 19:39. Показов 3852. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, такая проблема - не могу выйти из цикла по нажатию кнопки "отмена" - все время предлагает ввести число. или наоборот, при вводе не числа - выходит из программы. Как быть?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const START_GAME_NUMBER = 1;
const END_GAME_NUMBER = 1000;
const randomNumber = generateRandomInt(START_GAME_NUMBER, END_GAME_NUMBER);
 
function generateRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  const mathRandom = Math.floor(Math.random() * (max - min + 1)) + min;
  return mathRandom;
}
 
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
 
function getUserNumber() {
  const userInput = prompt('Введите число');
 
  while (isNaN(userInput) || !Number.isInteger(userInput)) {
    return (userNumber = parseFloat(userInput));
  }
  return userNumber;
}
 
function guessGame(randomNumber) {
  while (true) {
    const userNumber = getUserNumber();
 
    if (!isNumber(userNumber)) {
      alert('Введи число!');
      continue;
    }
 
    if (randomNumber < userNumber) {
      alert('Меньше!');
      continue;
    }
 
    if (randomNumber > userNumber) {
      alert('Больше!');
      continue;
    }
 
    if (randomNumber == userNumber) {
      alert('Правильно!');
      break;
    }
 
    if (userNumber === null) {
      break;
    }
  }
}
 
guessGame(randomNumber);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2020, 19:39
Ответы с готовыми решениями:

Игра «Угадай число»
Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона. Диапазон и количество попыток пользователь вводит с...

Игра Угадай Число
Необходимо создать игру УГАДАЙ ЧИСЛО с помощью html + css + js в одном файле *.html например, так: на странице 100...

Игра угадай число
стоит задача, написать простую программу, которая через prompt принимает числа от пользователя и сравнивает их с рандомно сгенерированным...

7
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.08.2020, 20:47
Лучший ответ Сообщение было отмечено DrType как решение

Решение

Цитата Сообщение от hrmnzn Посмотреть сообщение
не могу выйти из цикла по нажатию кнопки "отмена"
Ошибка в том, что проверка на null у вас идёт после проверки на "нечисло" и поэтому до неё попросту не доходит.
Также непонятно зачем функция getUserNumber?
Вот слегка улучшенный вариант:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const rnd = (min, max) => Math.floor(min + Math.random() * (max + 1 - min));
const START_GAME_NUMBER = 1;
const END_GAME_NUMBER = 1000;
const randomNumber = rnd(START_GAME_NUMBER, END_GAME_NUMBER);
 
function guessGame(randomNumber) {
  while (true) {
    const userInput = prompt('Введите число');
    if (userInput === null) break;
    const userNumber = +userInput;
 
    if (isNaN(userNumber) || !isFinite(userNumber)) {
      alert('Введи число!');
      continue;
    }
 
    if (userNumber < randomNumber) {
      alert('Меньше!');
      continue;
    } else if (userNumber > randomNumber) {
      alert('Больше!');
      continue;
    } else if (userNumber === randomNumber) {
      alert('Правильно!');
      break;
    }
  }
}
 
guessGame(randomNumber);
0
0 / 0 / 0
Регистрация: 09.07.2020
Сообщений: 13
27.08.2020, 20:51  [ТС]
Спасибо!
Да, я понимаю, что дело в этом. Была проверка так же, если результат NaN. но все равно просит ввести число.
функция getUserNumber нужна по заданию, но из нее прервать цикл, как известно, нельзя. Возможно ли сохранив функцию, его прервать по нажатию на кнопку отмены?
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
27.08.2020, 21:32
Цитата Сообщение от hrmnzn Посмотреть сообщение
Возможно ли сохранив функцию, его прервать по нажатию на кнопку отмены?
цикл останавливается по нажатию кнопки отмены, у вас иначе?
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.08.2020, 21:38
Цитата Сообщение от hrmnzn Посмотреть сообщение
Возможно ли сохранив функцию, его прервать по нажатию на кнопку отмены?
Да, просто перенести блок
JavaScript
1
2
3
if (userNumber === null) {
  break;
}
С 49-51 на 28-30 строчки, т.е. после
JavaScript
1
const userNumber = getUserNumber();
0
0 / 0 / 0
Регистрация: 09.07.2020
Сообщений: 13
27.08.2020, 21:42  [ТС]
не работает, предлагает ввести число

Добавлено через 1 минуту
У меня просит ввести число при нажатии на кнопку "отмена", в этом и проблема, даже после добавления блока
JavaScript
1
2
3
if(userNumber === null) {
    break
}
0
Эксперт JS
 Аватар для Iverycool
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
27.08.2020, 21:53
Лучший ответ Сообщение было отмечено gogolik как решение

Решение

hrmnzn, измените getUserNumber:
JavaScript
1
2
3
4
5
6
function getUserNumber() {
  const userInput = prompt('Введите число');
 
  if (userInput === null) return userInput;
  return parseFloat(userInput);
}
0
0 / 0 / 0
Регистрация: 09.07.2020
Сообщений: 13
27.08.2020, 22:19  [ТС]
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2020, 22:19
Помогаю со студенческими работами здесь

Игра угадай число. Не знаю почему не работет
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content type&quot; content=&quot;text/html&quot; charset=&quot;utf-8&quot;&gt; &lt;title&gt;Игра&lt;/title&gt; &lt;style...

Игра "Угадай Число"
Задача сделать игру(проверяю через консоль), в которой я ввожу число от 0 до 10, и если рандомное число совпадает с моим, то я...

Угадай число
Доброго времени суток! Помогите подалуйста составить страницу, которая сначала спросит у пользователя максимальное число ( для генерации...

Игровой бот угадай число
как это можно реалезовать? число вводит пользователь с помощью prompt а вывод сообщения с помощью alert Напишите простого игрового...

Игра "Угадай слово"
Всем привет, недавно начал учить JS вот пытаюсь сделать игру на угадывание слова, не как не могу додуматься как сделать цикл чтобы при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru