нужна помощь с завершением игры в угадывание на javascript [закрыто]

Вопрос или проблема

Я создаю игру в угадывание, и мне нужна помощь, чтобы сделать так, чтобы в моей игре было ограниченное количество попыток, и чтобы отображалось количество оставшихся попыток после каждой попытки, сделанной пользователем.

Я пытался создать оператор else if для этого, но это, похоже, не работает.

function main() {
  const minNum = 0;
  const maxNum = 100;
  const answer = Math.floor(Math.random() * (maxNum - minNum + 1));
  let attempts = 0;
  let inGame = true;
  let guess;

  while (inGame) {
    guess = readInt("угадайте число от 1 до 100: ");

    if (guess == answer) {
      inGame = false;
      console.log("вы успешно нашли число");
    } else if (guess < answer) {
      inGame = true;
      console.log("ваше предположение слишком низкое");
    } else if (guess > answer) {
      inGame = true;
      console.log("ваше предположение слишком высокое");
    } else if (guess == 7) {
      inGame = false;
      console.log("вы не смогли угадать число");
    }
  }
}
main();

Предполагая, что вы запускаете свой скрипт с помощью node, вы можете использовать readline, чтобы получить входные данные от пользователя.

Таким образом, ваш код может выглядеть примерно так:

const readline = require('readline');

function main() {
    const minNum = 0;
    const maxNum = 100;
    const maxAttempts = 2; // Максимальное количество разрешенных попыток
    const answer = Math.floor(Math.random() * (maxNum - minNum + 1));
    let attempts = 0;

    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });

    function askQuestion() {
        rl.question("Угадайте число от 1 до 100: ", (input) => {
            const guess = parseInt(input, 10);
            attempts++;

            if (guess === answer) {
                console.log("Вы успешно нашли число");
                rl.close();
            } else if (attempts >= maxAttempts) {
                console.log("Вы не смогли угадать число в пределах разрешенных попыток.");
                rl.close();
            } else if (guess < answer) {
                console.log("Ваше предположение слишком низкое");
                askQuestion();
            } else if (guess > answer) {
                console.log("Ваше предположение слишком высокое");
                askQuestion();
            } else {
                console.log("Неверный ввод. Пожалуйста, введите число.");
                askQuestion();
            }
        });
    }

    askQuestion();
}

main();

Ответ или решение

Конечно! Чтобы создать игру «Угадай число» на JavaScript с ограниченным количеством попыток и отображением оставшихся попыток, вы можете воспользоваться пакетом readline для чтения ввода пользователя в среде Node.js. Давайте подробно рассмотрим, как это сделать.

Шаг 1: Установка и подготовка

Если у вас еще нет Node.js в системе, его нужно установить. Затем создайте новый .js файл, например guessingGame.js, и откройте его в вашем текстовом редакторе.

Шаг 2: Импортирование модуля readline

Ваша игра будет взаимодействовать с пользователем, поэтому первый шаг — это импорт модуля readline, который мы будем использовать для получения пользовательского ввода.

const readline = require('readline');

Шаг 3: Определение основных переменных

Задайте диапазон случайных чисел, максимальное количество попыток и инициализируйте переменные, которые будут использоваться в игре:

function main() {
    const minNum = 1;
    const maxNum = 100;
    const maxAttempts = 5; // Максимальное количество попыток
    const answer = Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum; // Случайное число от 1 до 100
    let attempts = 0; // Подсчет попыток пользователя

Шаг 4: Создание интерфейса для чтения ввода

Создайте интерфейс для ввода и вывода:

    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });

Шаг 5: Логика игры

Реализуйте итерацию через попытки с помощью рекурсивной функции:

    function askQuestion() {
        rl.question(`Угадайте число от ${minNum} до ${maxNum}. Осталось попыток: ${maxAttempts - attempts}: `, (input) => {
            const guess = parseInt(input, 10);
            attempts++;

            if (isNaN(guess) || guess < minNum || guess > maxNum) {
                console.log("Пожалуйста, введите допустимое число.");
                askQuestion(); // Запрашиваем еще раз
            } else if (guess === answer) {
                console.log("Поздравляю! Вы угадали число!");
                rl.close();
            } else if (attempts >= maxAttempts) {
                console.log(`Вы исчерпали попытки. Правильное число было: ${answer}.`);
                rl.close();
            } else if (guess < answer) {
                console.log("Ваше предположение слишком низкое.");
                askQuestion(); // Запрашиваем еще раз
            } else {
                console.log("Ваше предположение слишком высокое.");
                askQuestion(); // Запрашиваем еще раз
            }
        });
    }

    askQuestion(); // Начинаем игру
}

main(); // Запуск основной функции

Результат

Теперь ваша игра будет принимать ввод от пользователя, проверять его правильность и показывать количество оставшихся попыток. Если пользователь угадает число, игру можно завершить, в противном случае, после исчерпания попыток, программа откроет правильный ответ.

Заключение

Этот пример иллюстрирует, как создать игру «Угадай число» на JavaScript с использованием модуля readline в Node.js. Учтите, что сделать игру более интересной можно, добавив больше фидбэка для пользователя или настройку максимального количества попыток.

Если у вас возникнут дополнительные вопросы или потребуются уточнения, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...