Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення Консольного Додатка Для Гри У Вгадування | Створення Консольних Застосунків з Node.js
Розробка бекенду з Node.js та Express.js

bookСтворення Консольного Додатка Для Гри У Вгадування

У цьому розділі ви підвищите свої навички створення консольних застосунків, занурившись у розробку захопливої 🎮 Гри "Вгадай число" 🔢. Ця інтерактивна гра запропонує гравцям випробувати свою інтуїцію, вгадуючи випадково згенероване число в заданому діапазоні. Паралельно ми розглянемо основні поняття, такі як:

  • 🎲 Генерація випадкових чисел;
  • ✅ Валідація введених даних;
  • 🤝 Взаємодія з користувачем;
  • 💾 Збереження результатів гри у файл.

🏆 Виклик чекає

Уявіть, що ви занурюєтесь у застосунок, який обіцяє захоплення та інтригу. Гравцям пропонується вгадати загадане число в заданому діапазоні. Додаток миттєво повідомляє про кожну спробу та ретельно підраховує кількість зроблених спроб.

Цей практичний приклад — ваша можливість вдосконалити навички створення CLI-додатків і продемонструвати мистецтво розробки інтерактивних програм.

🚀 Готовий застосунок

Погляньте на результат у дії! Нижче наведено GIF, що ілюструє захопливу гру "Вгадай число", яку ви створите:

Створення консольного додатку-гри "Вгадай число"

Перед вами два шляхи. Перший пропонує розпочати шлях без підказок, другий — скористатися корисним гідом для досягнення успіху. Незалежно від того, чи оберете ви сміливий старт або структурований підхід, на вас чекає захоплюючий досвід зі створення функціонального та цікавої консольної гри.

Головний план

  • 👉 Крок 1: Налаштування та ініціалізація;
  • 👉 Крок 2: Визначення параметрів гри;
  • 👉 Крок 3: Визначення допоміжних функцій;
  • 👉 Крок 4: Логіка гри;
  • 👉 Крок 5: Збереження результату гри;
  • 👉 Крок 6: Запуск гри;
  • 🎉 Висновок;
  • 🏁 Повний код додатку.

Крок 1: Налаштування та ініціалізація

Підготуйте "полотно", створивши нову директорію та файл з назвою app.js. У цьому файлі підключаємо необхідні модулі:

const readline = require('readline');
const fs = require('fs').promises;

Створіть інтерфейс Readline:

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

Пояснення: Імпортуються необхідні модулі: readline для взаємодії з користувачем та fs.promises для роботи з файлами. Далі створюється інтерфейс Readline з іменем rl для обробки введення та виведення.

Крок 2: Визначення параметрів гри

Встановлення мінімального та максимального числа:

const minNumber = 1;
const maxNumber = 100;

Генерація секретного числа:

const secretNumber =
  Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;

Ініціалізація лічильника спроб:

let attempts = 0;

Пояснення: Визначається діапазон чисел (minNumber та maxNumber), у межах якого буде згенеровано секретне число. Секретне число генерується випадковим чином за допомогою Math.random() і присвоюється змінній secretNumber. Змінна attempts ініціалізується для відстеження кількості спроб користувача.

Крок 3: Визначення допоміжних функцій

Оснастіть застосунок допоміжною функцією для бездоганної валідації:

function isValidGuess(guess) {
  return !isNaN(guess)
    && guess >= minNumber
    && guess <= maxNumber;
}

Пояснення: Функція isValidGuess перевіряє, чи є припущення користувача коректним числом у заданому діапазоні (minNumber до maxNumber).

Крок 4: Логіка гри

Основні механіки гри реалізовані у функції playGame:

function playGame() {
  rl.question(`Guess a number between ${minNumber} and ${maxNumber}: `, guess => {
    if (isValidGuess(guess)) {
      attempts++;
      const guessNumber = parseInt(guess);

      if (guessNumber === secretNumber) {
        console.log(`Congratulations! You guessed the number in ${attempts} attempts.`);
        saveGameResult(`Player won in ${attempts} attempts.`);
        rl.close();
      } else if (guessNumber < secretNumber) {
        console.log('Try higher.');
        playGame();
      } else {
        console.log('Try lower.');
        playGame();
      }
    } else {
      console.log('Please enter a valid number within the specified range.');
      playGame();
    }
  });
}

Пояснення: Функція playGame формує основний цикл гри. Вона використовує rl.question для запиту припущення у користувача. Якщо припущення коректне, функція перевіряє, чи співпадає воно із секретним числом. Якщо ні, надає користувачу зворотний зв'язок і рекурсивно продовжує ігровий цикл.

Крок 5: Збереження результату гри

Реалізуйте логіку збереження досягнень користувача у файл game_results.txt.

async function saveGameResult(result) {
  try {
    await fs.appendFile('game_results.txt', `${result}\n`);
    console.log('Game result saved.');
  } catch (err) {
    console.log('Failed to save game result.');
  }
}

Пояснення: Функція saveGameResult використовує fs.promises для додавання результату гри у файл з назвою game_results.txt. Вона надає зворотний зв'язок щодо успішності або невдачі збереження результату.

Крок 6: Запуск гри

Створіть привітальне повідомлення та запустіть гру:

console.log('Welcome to the Guess the Number game!');
playGame();

Пояснення: Виводимо вітальне повідомлення та запускаємо ігровий цикл, викликаючи функцію playGame.

🎉 Висновок: Коло перемоги

Створюючи додаток-гру "Вгадай число", ви отримали цінний досвід у розробці інтерактивних та захопливих консольних застосунків. Цей приклад демонструє поєднання введення користувача, генерації випадкових чисел, валідації та роботи з файлами, що разом створює цікаве ігрове середовище.

👨‍💻 Повний код застосунку

const readline = require("readline");
const fs = require("fs").promises;

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

const minNumber = 1;
const maxNumber = 100;

const secretNumber =
  Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
let attempts = 0;

function isValidGuess(guess) {
  return !isNaN(guess) && guess >= minNumber && guess <= maxNumber;
}

function playGame() {
  rl.question(
    `Guess a number between ${minNumber} and ${maxNumber}: `,
    (guess) => {
      if (isValidGuess(guess)) {
        attempts++;
        const guessNumber = parseInt(guess);

        if (guessNumber === secretNumber) {
          console.log(
            `Congratulations! You guessed the number in ${attempts} attempts.`
          );
          saveGameResult(`Player won in ${attempts} attempts.`);
          rl.close();
        } else if (guessNumber < secretNumber) {
          console.log("Try higher.");
          playGame();
        } else {
          console.log("Try lower.");
          playGame();
        }
      } else {
        console.log("Please enter a valid number within the specified range.");
        playGame();
      }
    }
  );
}

async function saveGameResult(result) {
  try {
    await fs.appendFile("game_results.txt", `${result}\n`);
    console.log("Game result saved.");
  } catch (err) {
    console.log("Failed to save game result.");
  }
}

console.log("Welcome to the Guess the Number game!");
playGame();

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 8

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain how the recursive game loop works in the playGame function?

What happens if the user enters an invalid input?

How does the game save the results to the file?

Awesome!

Completion rate improved to 2.56

bookСтворення Консольного Додатка Для Гри У Вгадування

Свайпніть щоб показати меню

У цьому розділі ви підвищите свої навички створення консольних застосунків, занурившись у розробку захопливої 🎮 Гри "Вгадай число" 🔢. Ця інтерактивна гра запропонує гравцям випробувати свою інтуїцію, вгадуючи випадково згенероване число в заданому діапазоні. Паралельно ми розглянемо основні поняття, такі як:

  • 🎲 Генерація випадкових чисел;
  • ✅ Валідація введених даних;
  • 🤝 Взаємодія з користувачем;
  • 💾 Збереження результатів гри у файл.

🏆 Виклик чекає

Уявіть, що ви занурюєтесь у застосунок, який обіцяє захоплення та інтригу. Гравцям пропонується вгадати загадане число в заданому діапазоні. Додаток миттєво повідомляє про кожну спробу та ретельно підраховує кількість зроблених спроб.

Цей практичний приклад — ваша можливість вдосконалити навички створення CLI-додатків і продемонструвати мистецтво розробки інтерактивних програм.

🚀 Готовий застосунок

Погляньте на результат у дії! Нижче наведено GIF, що ілюструє захопливу гру "Вгадай число", яку ви створите:

Створення консольного додатку-гри "Вгадай число"

Перед вами два шляхи. Перший пропонує розпочати шлях без підказок, другий — скористатися корисним гідом для досягнення успіху. Незалежно від того, чи оберете ви сміливий старт або структурований підхід, на вас чекає захоплюючий досвід зі створення функціонального та цікавої консольної гри.

Головний план

  • 👉 Крок 1: Налаштування та ініціалізація;
  • 👉 Крок 2: Визначення параметрів гри;
  • 👉 Крок 3: Визначення допоміжних функцій;
  • 👉 Крок 4: Логіка гри;
  • 👉 Крок 5: Збереження результату гри;
  • 👉 Крок 6: Запуск гри;
  • 🎉 Висновок;
  • 🏁 Повний код додатку.

Крок 1: Налаштування та ініціалізація

Підготуйте "полотно", створивши нову директорію та файл з назвою app.js. У цьому файлі підключаємо необхідні модулі:

const readline = require('readline');
const fs = require('fs').promises;

Створіть інтерфейс Readline:

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

Пояснення: Імпортуються необхідні модулі: readline для взаємодії з користувачем та fs.promises для роботи з файлами. Далі створюється інтерфейс Readline з іменем rl для обробки введення та виведення.

Крок 2: Визначення параметрів гри

Встановлення мінімального та максимального числа:

const minNumber = 1;
const maxNumber = 100;

Генерація секретного числа:

const secretNumber =
  Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;

Ініціалізація лічильника спроб:

let attempts = 0;

Пояснення: Визначається діапазон чисел (minNumber та maxNumber), у межах якого буде згенеровано секретне число. Секретне число генерується випадковим чином за допомогою Math.random() і присвоюється змінній secretNumber. Змінна attempts ініціалізується для відстеження кількості спроб користувача.

Крок 3: Визначення допоміжних функцій

Оснастіть застосунок допоміжною функцією для бездоганної валідації:

function isValidGuess(guess) {
  return !isNaN(guess)
    && guess >= minNumber
    && guess <= maxNumber;
}

Пояснення: Функція isValidGuess перевіряє, чи є припущення користувача коректним числом у заданому діапазоні (minNumber до maxNumber).

Крок 4: Логіка гри

Основні механіки гри реалізовані у функції playGame:

function playGame() {
  rl.question(`Guess a number between ${minNumber} and ${maxNumber}: `, guess => {
    if (isValidGuess(guess)) {
      attempts++;
      const guessNumber = parseInt(guess);

      if (guessNumber === secretNumber) {
        console.log(`Congratulations! You guessed the number in ${attempts} attempts.`);
        saveGameResult(`Player won in ${attempts} attempts.`);
        rl.close();
      } else if (guessNumber < secretNumber) {
        console.log('Try higher.');
        playGame();
      } else {
        console.log('Try lower.');
        playGame();
      }
    } else {
      console.log('Please enter a valid number within the specified range.');
      playGame();
    }
  });
}

Пояснення: Функція playGame формує основний цикл гри. Вона використовує rl.question для запиту припущення у користувача. Якщо припущення коректне, функція перевіряє, чи співпадає воно із секретним числом. Якщо ні, надає користувачу зворотний зв'язок і рекурсивно продовжує ігровий цикл.

Крок 5: Збереження результату гри

Реалізуйте логіку збереження досягнень користувача у файл game_results.txt.

async function saveGameResult(result) {
  try {
    await fs.appendFile('game_results.txt', `${result}\n`);
    console.log('Game result saved.');
  } catch (err) {
    console.log('Failed to save game result.');
  }
}

Пояснення: Функція saveGameResult використовує fs.promises для додавання результату гри у файл з назвою game_results.txt. Вона надає зворотний зв'язок щодо успішності або невдачі збереження результату.

Крок 6: Запуск гри

Створіть привітальне повідомлення та запустіть гру:

console.log('Welcome to the Guess the Number game!');
playGame();

Пояснення: Виводимо вітальне повідомлення та запускаємо ігровий цикл, викликаючи функцію playGame.

🎉 Висновок: Коло перемоги

Створюючи додаток-гру "Вгадай число", ви отримали цінний досвід у розробці інтерактивних та захопливих консольних застосунків. Цей приклад демонструє поєднання введення користувача, генерації випадкових чисел, валідації та роботи з файлами, що разом створює цікаве ігрове середовище.

👨‍💻 Повний код застосунку

const readline = require("readline");
const fs = require("fs").promises;

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

const minNumber = 1;
const maxNumber = 100;

const secretNumber =
  Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
let attempts = 0;

function isValidGuess(guess) {
  return !isNaN(guess) && guess >= minNumber && guess <= maxNumber;
}

function playGame() {
  rl.question(
    `Guess a number between ${minNumber} and ${maxNumber}: `,
    (guess) => {
      if (isValidGuess(guess)) {
        attempts++;
        const guessNumber = parseInt(guess);

        if (guessNumber === secretNumber) {
          console.log(
            `Congratulations! You guessed the number in ${attempts} attempts.`
          );
          saveGameResult(`Player won in ${attempts} attempts.`);
          rl.close();
        } else if (guessNumber < secretNumber) {
          console.log("Try higher.");
          playGame();
        } else {
          console.log("Try lower.");
          playGame();
        }
      } else {
        console.log("Please enter a valid number within the specified range.");
        playGame();
      }
    }
  );
}

async function saveGameResult(result) {
  try {
    await fs.appendFile("game_results.txt", `${result}\n`);
    console.log("Game result saved.");
  } catch (err) {
    console.log("Failed to save game result.");
  }
}

console.log("Welcome to the Guess the Number game!");
playGame();

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 8
some-alt