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

Игровой бот угадай число

30.08.2018, 20:41. Показов 20498. Ответов 9
Метки нет (Все метки)

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


• Предлагает пользователю ввести свой вариант отгадки

• Если пользовательское число больше, чем загаданное, то выводит «Меньше!» и предлагает ввести новый вариант

• Если пользовательское число меньше, чем загаданное, то выводит «Больше!» и предлагает ввести новый вариант

• Если пользователь вводит правильное число, то выводит «Правильно!»

• Если пользователь ввел не число, то выводит «Введи число!»

• Если пользователь нажимает «Отмена», то игра заканчивается

как это можно реалезовать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2018, 20:41
Ответы с готовыми решениями:

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

Игра «Угадай число от 1 до 100». Говнокод
Суть такова: программа запускается и просит человека ввести число от 1 до 100, второй человек должен угадать это число. У второго человека...

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

9
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.08.2018, 21:39
Лучший ответ Сообщение было отмечено Iverycool как решение

Решение

PHP/HTML
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
<!doctype html>
<html>
<head>
    <title>Игровой бот</title>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        let input, random = Math.floor(Math.random() * 10);
 
        while (input = prompt("Введите число от 0 до 9:")) {
            if (isNaN(input))
                alert("Введите число!");
            else if (input > random)
                alert("Меньше!");
            else if (input < random)
                alert("Больше!");
            else if (input == random) {
                alert("Правильно!");
                break;
            }
        }
    </script>
</body>
</html>
1
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 7
22.03.2020, 11:24
Доброго дня!
Я написал код иначе, но проблема на ввод не числа реализована лишь частично. Т.е при вводе пустой строки или пробела происходит сравнение. Как этого избежать?
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
function random(number) {
    return Math.ceil(Math.random() * number);
 } 
 
let name = prompt('Привет! Как тебя зовут?');
 
while (name == '' || name == null) {
    name = prompt('Привет! Как тебя зовут?');
    
}
 
alert(name + ', давай с тобой сыграем в игру. Я загадал число от 1 до 1000. Попробуй отгадать его. После каждой попытки я скажу "мало", "много" или "верно". Когда тебе надоест играть, нажми кнопку Esc на клавиатуре. Поехали!');
 
let number = random(1000);
 
let answer = prompt('Какое число я загадал?');
    
let counter = 1;
 
if  (answer == null ) {
 
alert('Пока! Как нибудь сыграем ещё. ^_^');
 
    answer == + answer;
 
} else {
 
    while (answer != number && answer != null) {
                      
        (answer < number) ? answer = prompt('Мало. Попробуй ещё раз!') :
             
        (answer > number) ? answer = prompt('Много. Попробуй ещё раз!') :
                                    
        (answer != parseInt(answer) ) ? answer = prompt('Вводить нужно числа.  Какое число я загадал?') : false;
                               
        counter = counter + 1;
        
    }   if (answer == number) {
 
        alert('Верно! Это число ' + number + '.' + ' Тебе понадобилось ' + counter + ' попыток.');
 
        } else if (answer == null) {
 
            }  alert('Пока! Как нибудь сыграем ещё. ^_^');
 
}
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.03.2020, 14:56
ivitolweb, здравствуйте.
Есть известное жизненное наблюдение - иногда на наивный вопрос мудрецы не смогут найти ответ.

Чтобы обойти пробел, нужно написать заметно более хитрый скрипт:
PHP/HTML
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
<!doctype html>
<html>
<head>
    <title>Игровой бот</title>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        let input, number, random = Math.floor(Math.random() * 1000);
 
        while ((input = prompt("Загадано число от 0 до 999. Попробуйте угадать!")) !== null) {
            if ((number = +input) !== parseFloat(input) || !Number.isFinite(number))
                alert("Введите число!");
            else if (number > random)
                alert("Меньше!");
            else if (number < random)
                alert("Больше!");
            else if (number == random) {
                alert("Правильно!");
                break;
            }
        }
    </script>
</body>
</html>
0
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 7
22.03.2020, 15:47
amr-now, Здорово!
Действительно хитрый.)
Не проходили мы ещё parseFloat и Number.isFinite.... А для генерации случайных чисел рекомендовалось найти готовый код в интернете.
Мой преподаватель утверждает, что уже изученного (с нуля до рекурсии) достаточно для решения.
Безусловно ваш вариант можно использовать в задаче и сдать её и она будет принята.
Но мне придется искать решение в рамках моего арсенала.
Как в том анекдоте - "Вы суслика видите? А он есть." )))
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.03.2020, 15:57
ivitolweb, преподавателю объясните, что в связи с корона-вирусом пришлось найти готовый код в интернете для определения, является ли строка числом.
1
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 7
22.03.2020, 16:37
amr-now, Благодарю вас!
Видимо по другому задачу не решить.
Прочёл сейчас про ваши "хитрые фишки". Хочу спросить.

1.Правильно ли я понимаю, что функция parseFloat нужна для "вытаскивания" цифр, введённых вперемешку с не цифрами, но тогда зачем нужен +input преобразующий введённые "123" в 123 ?

2.Метод Number.isFinite определяет длину строки ( в данном контексте)?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
22.03.2020, 17:04
ivitolweb,
Учебник. Темы по числам:
https://learn.javascript.ru/types
https://learn.javascript.ru/type-conversions ( +str эквивалентно Number(str) )
https://learn.javascript.ru/number

Справка по parseFloat и isFinite: https://developer.mozilla.org/... parseFloat

Домашнее задание: понять и простить ))
1
1 / 1 / 0
Регистрация: 13.06.2020
Сообщений: 3
14.06.2020, 21:52
при вводе пустой строки или пробела сравнение не происходит. скрипт максимально простой,для новичков.

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
function searchNumber (min, max) {
    
    let randomNumber = Math.floor(Math.random() * (max- min + 1)) + min;
     
    cycleStart: while( true ) {
 
        let userNumber =  prompt(`Введите число`);
 
        if (+ userNumber) {
 
            if (+ userNumber < randomNumber ) {
                alert(`Больше`);
            }
            else if (+ userNumber > randomNumber) {
                alert(`Меньше`);  
            }
            else if (+ userNumber == randomNumber)  {
                alert(`Правильно!`);
                
                if(confirm(`Продолжить игру?`)) {
                    searchNumber (1, 1000)
                }
                else {
                    break;
                }
                
            }
 
        }
        else if(+ userNumber == 0 && userNumber !== null) {
 
            continue cycleStart;
 
        }
        else if(userNumber == null) {
 
            break;
 
        }
           
    }
 
}
 
searchNumber(1 , 1000);
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
16.06.2020, 07:56
Alexander_burek, исправление:
PHP/HTML
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        function searchNumber(min, max) {
            let randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
 
            let input /*string*/, number /*integer*/;
            while (true) {
                input = prompt(`Введите целое число от ${min} до ${max} включительно:`);
                if ((number = +input) !== parseInt(input))
                    alert("Введите число!");
                else {
                    if (number < randomNumber) {
                        alert(`Больше`);
                    }
                    else if (number > randomNumber) {
                        alert(`Меньше`);
                    }
                    else {
                        alert(`Правильно!`);
                        break; // Раунд закончился победой
                    }
                }
            }
        }
 
        let input1 = prompt(`Введите минимальное целое число:`);
        let input2 = prompt(`Введите максимальное целое число включительно:`);
        let min, max; // Целые числа
        if ((min = +input1) !== parseInt(input1) || (max = +input2) !== parseInt(input2)) {
            alert("Диапазон ограничивается двумя целыми числами!");
        }
        else do {
            searchNumber(min, max);
        } while (confirm(`Продолжить игру?`));
    </script>
</body>
</html>
Здесь мы пытаемся определить, ввели целое число или не ввели.
Хитростью parseInt() является то, что не считает бесконечность и NaN целым числом. А parseFloat() считает бесконечность и NaN вещественным числом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2020, 07:56
Помогаю со студенческими работами здесь

Игровой бот
Нахожусь в процессе написания бота для одной игры. хотелось бы спросить совета и обсудить некоторые вопросы. Бот для начала работает...

Игровой бот
Всем привет. Хочу написать игрового бота на python для bfme 2 (Battle for middle earth 2) и потом уже подцепить к нему open ai и...

Игра «угадай число». Задуманное число рассчитать из текущей секунды часов
Разработать программу на языке Ассемблера Intel x86 для ОС MS-DOS. Модель памяти – не регламентируется. Все числа – однозначные (1 символ в...

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

Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его угадать
помогите решить Написать игру “Угадай число!”. Компьютер загадывает число в определенном диапазоне, а пользователь пытается его...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru