Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellung Einer Zahlenratespiel-Konsolenanwendung | Erstellung von Konsolenanwendungen mit Node.js
Backend-Entwicklung mit Node.js und Express.js

bookErstellung Einer Zahlenratespiel-Konsolenanwendung

In diesem Kapitel werden die Fähigkeiten zur Entwicklung von Konsolenanwendungen erweitert, indem wir gemeinsam eine spannende 🎮 Zahlenratespiel-App 🔢 erstellen. Dieses interaktive Spiel fordert die Spieler heraus, ihre Intuition zu nutzen, um eine zufällig generierte Zahl innerhalb eines vorgegebenen Bereichs zu erraten. Dabei werden grundlegende Konzepte behandelt wie:

  • 🎲 Zufallszahlengenerierung;
  • ✅ Eingabevalidierung;
  • 🤝 Benutzerinteraktion;
  • 💾 Sogar das Speichern der Spielergebnisse in einer Datei.

🏆 Herausforderung erwartet Sie

Stellen Sie sich vor, Sie tauchen in eine App ein, die Spannung und Faszination verspricht. Die Spieler sind eingeladen, eine geheimnisvoll ausgewählte Zahl innerhalb eines festgelegten Bereichs zu erraten. Die App gibt sofortiges Feedback zu jedem Versuch und führt eine genaue Zählung der abgegebenen Tipps.

Dieses praxisnahe Beispiel bietet die Möglichkeit, die Fähigkeiten beim Erstellen von CLI-Anwendungen zu vertiefen und zeigt, wie interaktive Programme gestaltet werden.

🚀 Ergebnis-App

Sehen Sie die Magie in Aktion! Unten ist ein GIF, das die spannende Zahlenratespiel-App zeigt, die Sie entwickeln werden:

Entwicklung einer Konsolenanwendung für ein Ratespiel

Es stehen zwei Wege zur Auswahl. Die erste Option lädt dazu ein, die Reise ohne Unterstützung zu beginnen, während die zweite einen hilfreichen Leitfaden bietet, um den Erfolg zu sichern. Unabhängig davon, ob Sie mutig eintauchen oder dem strukturierten Leitfaden folgen, erwartet Sie ein faszinierendes Erlebnis, das mit einer funktionalen und ansprechenden Konsolenanwendung endet.

Masterplan

  • 👉 Schritt 1: Einrichtung und Initialisierung;
  • 👉 Schritt 2: Definition der Spielparameter;
  • 👉 Schritt 3: Definition von Hilfsfunktionen;
  • 👉 Schritt 4: Spiellogik;
  • 👉 Schritt 5: Spielergebnis speichern;
  • 👉 Schritt 6: Spiel starten;
  • 🎉 Fazit;
  • 🏁 Vollständiger App-Code.

Schritt 1: Einrichtung und Initialisierung

Bereiten Sie die Grundlage vor, indem Sie ein neues Verzeichnis und eine Datei mit dem Namen app.js erstellen. In dieser Datei binden wir die erforderlichen Module ein:

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

Erstellen Sie ein Readline-Interface:

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

Erläuterung: Die erforderlichen Module werden importiert: readline für die Benutzerinteraktion und fs.promises für Dateioperationen. Anschließend wird eine Readline-Schnittstelle mit dem Namen rl erstellt, um Eingabe und Ausgabe zu verwalten.

Schritt 2: Spielparameter festlegen

Festlegung der minimalen und maximalen Zahlen:

const minNumber = 1;
const maxNumber = 100;

Generierung der geheimen Zahl:

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

Initialisierung des Versuchszählers:

let attempts = 0;

Erläuterung: Der Zahlenbereich (minNumber und maxNumber), in dem die geheime Zahl generiert wird, wird definiert. Die geheime Zahl wird zufällig mit Math.random() erzeugt und der Variable secretNumber zugewiesen. Die Variable attempts wird initialisiert, um die Anzahl der Versuche des Benutzers zu verfolgen.

Schritt 3: Hilfsfunktionen definieren

Ausstattung mit einer Hilfsfunktion für eine einwandfreie Validierung:

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

Erläuterung: Die Funktion isValidGuess prüft, ob die Eingabe des Benutzers eine gültige Zahl innerhalb des angegebenen Bereichs (minNumber bis maxNumber) ist.

Schritt 4: Spiellogik

Die Kernmechanik des Spiels über die Funktion 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();
    }
  });
}

Erläuterung: Die Funktion playGame bildet die zentrale Spielschleife. Sie verwendet rl.question, um den Benutzer nach einer Zahl zu fragen. Ist die Eingabe gültig, prüft die Funktion, ob die Zahl mit der geheimen Zahl übereinstimmt. Andernfalls erhält der Benutzer eine Rückmeldung und die Spielschleife wird rekursiv fortgesetzt.

Schritt 5: Spielergebnis speichern

Implementierung der Logik zum Speichern der Spielerfolge des Benutzers in der Datei 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.');
  }
}

Erläuterung: Die Funktion saveGameResult verwendet fs.promises, um das Spielergebnis an eine Datei mit dem Namen game_results.txt anzuhängen. Es erfolgt eine Rückmeldung über den Erfolg oder das Scheitern des Speichervorgangs.

Schritt 6: Spiel starten

Erstellung der Willkommensnachricht und Start des Spiels:

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

Erläuterung: Es wird eine Willkommensnachricht angezeigt und die Spielschleife durch Aufruf der Funktion playGame gestartet.

🎉 Fazit: Ehrenrunde

Durch die Entwicklung der Guess the Number Game App wurden wertvolle Erfahrungen im Entwurf interaktiver und ansprechender Konsolenanwendungen gesammelt. Dieses Beispiel demonstriert die Verbindung von Benutzereingaben, Zufallszahlengenerierung, Validierung und Dateimanipulation, was zu einem überzeugenden Spielerlebnis führt.

👨‍💻 Vollständiger App-Code

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();

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 8

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.56

bookErstellung Einer Zahlenratespiel-Konsolenanwendung

Swipe um das Menü anzuzeigen

In diesem Kapitel werden die Fähigkeiten zur Entwicklung von Konsolenanwendungen erweitert, indem wir gemeinsam eine spannende 🎮 Zahlenratespiel-App 🔢 erstellen. Dieses interaktive Spiel fordert die Spieler heraus, ihre Intuition zu nutzen, um eine zufällig generierte Zahl innerhalb eines vorgegebenen Bereichs zu erraten. Dabei werden grundlegende Konzepte behandelt wie:

  • 🎲 Zufallszahlengenerierung;
  • ✅ Eingabevalidierung;
  • 🤝 Benutzerinteraktion;
  • 💾 Sogar das Speichern der Spielergebnisse in einer Datei.

🏆 Herausforderung erwartet Sie

Stellen Sie sich vor, Sie tauchen in eine App ein, die Spannung und Faszination verspricht. Die Spieler sind eingeladen, eine geheimnisvoll ausgewählte Zahl innerhalb eines festgelegten Bereichs zu erraten. Die App gibt sofortiges Feedback zu jedem Versuch und führt eine genaue Zählung der abgegebenen Tipps.

Dieses praxisnahe Beispiel bietet die Möglichkeit, die Fähigkeiten beim Erstellen von CLI-Anwendungen zu vertiefen und zeigt, wie interaktive Programme gestaltet werden.

🚀 Ergebnis-App

Sehen Sie die Magie in Aktion! Unten ist ein GIF, das die spannende Zahlenratespiel-App zeigt, die Sie entwickeln werden:

Entwicklung einer Konsolenanwendung für ein Ratespiel

Es stehen zwei Wege zur Auswahl. Die erste Option lädt dazu ein, die Reise ohne Unterstützung zu beginnen, während die zweite einen hilfreichen Leitfaden bietet, um den Erfolg zu sichern. Unabhängig davon, ob Sie mutig eintauchen oder dem strukturierten Leitfaden folgen, erwartet Sie ein faszinierendes Erlebnis, das mit einer funktionalen und ansprechenden Konsolenanwendung endet.

Masterplan

  • 👉 Schritt 1: Einrichtung und Initialisierung;
  • 👉 Schritt 2: Definition der Spielparameter;
  • 👉 Schritt 3: Definition von Hilfsfunktionen;
  • 👉 Schritt 4: Spiellogik;
  • 👉 Schritt 5: Spielergebnis speichern;
  • 👉 Schritt 6: Spiel starten;
  • 🎉 Fazit;
  • 🏁 Vollständiger App-Code.

Schritt 1: Einrichtung und Initialisierung

Bereiten Sie die Grundlage vor, indem Sie ein neues Verzeichnis und eine Datei mit dem Namen app.js erstellen. In dieser Datei binden wir die erforderlichen Module ein:

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

Erstellen Sie ein Readline-Interface:

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

Erläuterung: Die erforderlichen Module werden importiert: readline für die Benutzerinteraktion und fs.promises für Dateioperationen. Anschließend wird eine Readline-Schnittstelle mit dem Namen rl erstellt, um Eingabe und Ausgabe zu verwalten.

Schritt 2: Spielparameter festlegen

Festlegung der minimalen und maximalen Zahlen:

const minNumber = 1;
const maxNumber = 100;

Generierung der geheimen Zahl:

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

Initialisierung des Versuchszählers:

let attempts = 0;

Erläuterung: Der Zahlenbereich (minNumber und maxNumber), in dem die geheime Zahl generiert wird, wird definiert. Die geheime Zahl wird zufällig mit Math.random() erzeugt und der Variable secretNumber zugewiesen. Die Variable attempts wird initialisiert, um die Anzahl der Versuche des Benutzers zu verfolgen.

Schritt 3: Hilfsfunktionen definieren

Ausstattung mit einer Hilfsfunktion für eine einwandfreie Validierung:

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

Erläuterung: Die Funktion isValidGuess prüft, ob die Eingabe des Benutzers eine gültige Zahl innerhalb des angegebenen Bereichs (minNumber bis maxNumber) ist.

Schritt 4: Spiellogik

Die Kernmechanik des Spiels über die Funktion 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();
    }
  });
}

Erläuterung: Die Funktion playGame bildet die zentrale Spielschleife. Sie verwendet rl.question, um den Benutzer nach einer Zahl zu fragen. Ist die Eingabe gültig, prüft die Funktion, ob die Zahl mit der geheimen Zahl übereinstimmt. Andernfalls erhält der Benutzer eine Rückmeldung und die Spielschleife wird rekursiv fortgesetzt.

Schritt 5: Spielergebnis speichern

Implementierung der Logik zum Speichern der Spielerfolge des Benutzers in der Datei 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.');
  }
}

Erläuterung: Die Funktion saveGameResult verwendet fs.promises, um das Spielergebnis an eine Datei mit dem Namen game_results.txt anzuhängen. Es erfolgt eine Rückmeldung über den Erfolg oder das Scheitern des Speichervorgangs.

Schritt 6: Spiel starten

Erstellung der Willkommensnachricht und Start des Spiels:

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

Erläuterung: Es wird eine Willkommensnachricht angezeigt und die Spielschleife durch Aufruf der Funktion playGame gestartet.

🎉 Fazit: Ehrenrunde

Durch die Entwicklung der Guess the Number Game App wurden wertvolle Erfahrungen im Entwurf interaktiver und ansprechender Konsolenanwendungen gesammelt. Dieses Beispiel demonstriert die Verbindung von Benutzereingaben, Zufallszahlengenerierung, Validierung und Dateimanipulation, was zu einem überzeugenden Spielerlebnis führt.

👨‍💻 Vollständiger App-Code

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();

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 8
some-alt