Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bygge en Gjettelek-Konsollapp | Bygge Konsollapplikasjoner med Node.js
Backend-Utvikling med Node.js og Express.js

bookBygge en Gjettelek-Konsollapp

I dette kapittelet får du muligheten til å forbedre ferdighetene dine med konsollapplikasjoner når vi går i gang med å lage et spennende 🎮 Gjett tallet 🔢-spill. Dette interaktive spillet utfordrer spillere til å bruke intuisjonen sin ved å gjette et tilfeldig generert tall innenfor et forhåndsdefinert område. Underveis vil vi utforske grunnleggende konsepter som

  • 🎲 Generering av tilfeldige tall;
  • ✅ Validering av brukerinput;
  • 🤝 Brukerinteraksjon;
  • 💾 Til og med lagring av spillresultater til en fil.

🏆 Utfordringen venter

Se for deg å utforske en app som lover spenning og nysgjerrighet. Spillere inviteres til å gjette et mystisk valgt tall innenfor et forhåndsdefinert område. Appen gir umiddelbar tilbakemelding på hvert forsøk og holder nøye oversikt over antall gjetninger.

Dette praktiske eksempelet gir deg muligheten til å finpusse ferdighetene dine i å bygge CLI-apper og demonstrerer kunsten å lage interaktive programmer.

🚀 Resultatapp

Se magien i praksis! Nedenfor ser du en GIF som illustrerer det spennende "Gjett tallet"-spillet du skal lage:

Bygge en konsollapplikasjon for gjettelek

Du står overfor to veier. Det første alternativet inviterer deg til å starte reisen uten hjelp, mens det andre tilbyr en nyttig veiledning for å sikre suksess. Enten du kaster deg ut i det eller følger den strukturerte veiledningen, venter en fascinerende opplevelse som gir deg en funksjonell og engasjerende konsollapplikasjon.

Hovedplan

  • 👉 Steg 1: Oppsett og initialisering;
  • 👉 Steg 2: Definer spillparametere;
  • 👉 Steg 3: Definer hjelpefunksjoner;
  • 👉 Steg 4: Spilllogikk;
  • 👉 Steg 5: Lagre spillresultat;
  • 👉 Steg 6: Start spillet;
  • 🎉 Konklusjon;
  • 🏁 Fullstendig appkode.

Steg 1: Oppsett og initialisering

Forbered grunnlaget ved å opprette en ny katalog og en fil kalt app.js. I denne filen importerer vi nødvendige moduler:

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

Opprett et Readline-grensesnitt:

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

Forklaring: Vi importerer de nødvendige modulene: readline for brukerinteraksjon og fs.promises for filoperasjoner. Deretter oppretter vi et Readline-grensesnitt kalt rl for å håndtere inn- og utdata.

Steg 2: Definer spillparametere

Angi minimums- og maksimumstall:

const minNumber = 1;
const maxNumber = 100;

Generer det hemmelige tallet:

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

Initialiser forsøkstelleren:

let attempts = 0;

Forklaring: Vi definerer området for tallene (minNumber og maxNumber) som det hemmelige tallet skal genereres innenfor. Det hemmelige tallet genereres tilfeldig ved hjelp av Math.random() og tildeles secretNumber. Variabelen attempts initialiseres for å holde oversikt over brukerens forsøk.

Steg 3: Definer hjelpefunksjoner

Utstyr med en hjelpefunksjon for feilfri validering:

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

Forklaring: Funksjonen isValidGuess kontrollerer om brukerens gjetning er et gyldig tall innenfor det angitte området (minNumber til maxNumber).

Steg 4: Spilllogikk

Spillets kjernefunksjonalitet gjennom playGame-funksjonen:

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

Forklaring: Funksjonen playGame utgjør hovedspill-løkken. Den bruker rl.question for å be brukeren om en gjetning. Hvis gjetningen er gyldig, sjekker funksjonen om gjetningen samsvarer med det hemmelige tallet. Hvis ikke, gis tilbakemelding til brukeren og spill-løkken fortsetter rekursivt.

Steg 5: Lagre spillresultat

Implementer logikken for å lagre brukerens spillprestasjoner i filen 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.');
  }
}

Forklaring: Funksjonen saveGameResult bruker fs.promises for å legge til spillresultatet i en fil kalt game_results.txt. Den gir tilbakemelding om lagringen av resultatet var vellykket eller mislykket.

Steg 6: Start spillet

Opprett velkomstmelding og start spillet:

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

Forklaring: Vi viser en velkomstmelding og starter spill-løkken ved å kalle funksjonen playGame.

🎉 Konklusjon: Seiersrunde

Ved å utvikle Gjett Tallet-spillet, har du fått verdifull erfaring med å designe interaktive og engasjerende konsollapplikasjoner. Dette eksempelet viser samspillet mellom brukerinput, generering av tilfeldige tall, validering og filhåndtering, noe som resulterer i en engasjerende spillopplevelse.

👨‍💻 Full App-kode

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 8

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.56

bookBygge en Gjettelek-Konsollapp

Sveip for å vise menyen

I dette kapittelet får du muligheten til å forbedre ferdighetene dine med konsollapplikasjoner når vi går i gang med å lage et spennende 🎮 Gjett tallet 🔢-spill. Dette interaktive spillet utfordrer spillere til å bruke intuisjonen sin ved å gjette et tilfeldig generert tall innenfor et forhåndsdefinert område. Underveis vil vi utforske grunnleggende konsepter som

  • 🎲 Generering av tilfeldige tall;
  • ✅ Validering av brukerinput;
  • 🤝 Brukerinteraksjon;
  • 💾 Til og med lagring av spillresultater til en fil.

🏆 Utfordringen venter

Se for deg å utforske en app som lover spenning og nysgjerrighet. Spillere inviteres til å gjette et mystisk valgt tall innenfor et forhåndsdefinert område. Appen gir umiddelbar tilbakemelding på hvert forsøk og holder nøye oversikt over antall gjetninger.

Dette praktiske eksempelet gir deg muligheten til å finpusse ferdighetene dine i å bygge CLI-apper og demonstrerer kunsten å lage interaktive programmer.

🚀 Resultatapp

Se magien i praksis! Nedenfor ser du en GIF som illustrerer det spennende "Gjett tallet"-spillet du skal lage:

Bygge en konsollapplikasjon for gjettelek

Du står overfor to veier. Det første alternativet inviterer deg til å starte reisen uten hjelp, mens det andre tilbyr en nyttig veiledning for å sikre suksess. Enten du kaster deg ut i det eller følger den strukturerte veiledningen, venter en fascinerende opplevelse som gir deg en funksjonell og engasjerende konsollapplikasjon.

Hovedplan

  • 👉 Steg 1: Oppsett og initialisering;
  • 👉 Steg 2: Definer spillparametere;
  • 👉 Steg 3: Definer hjelpefunksjoner;
  • 👉 Steg 4: Spilllogikk;
  • 👉 Steg 5: Lagre spillresultat;
  • 👉 Steg 6: Start spillet;
  • 🎉 Konklusjon;
  • 🏁 Fullstendig appkode.

Steg 1: Oppsett og initialisering

Forbered grunnlaget ved å opprette en ny katalog og en fil kalt app.js. I denne filen importerer vi nødvendige moduler:

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

Opprett et Readline-grensesnitt:

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

Forklaring: Vi importerer de nødvendige modulene: readline for brukerinteraksjon og fs.promises for filoperasjoner. Deretter oppretter vi et Readline-grensesnitt kalt rl for å håndtere inn- og utdata.

Steg 2: Definer spillparametere

Angi minimums- og maksimumstall:

const minNumber = 1;
const maxNumber = 100;

Generer det hemmelige tallet:

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

Initialiser forsøkstelleren:

let attempts = 0;

Forklaring: Vi definerer området for tallene (minNumber og maxNumber) som det hemmelige tallet skal genereres innenfor. Det hemmelige tallet genereres tilfeldig ved hjelp av Math.random() og tildeles secretNumber. Variabelen attempts initialiseres for å holde oversikt over brukerens forsøk.

Steg 3: Definer hjelpefunksjoner

Utstyr med en hjelpefunksjon for feilfri validering:

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

Forklaring: Funksjonen isValidGuess kontrollerer om brukerens gjetning er et gyldig tall innenfor det angitte området (minNumber til maxNumber).

Steg 4: Spilllogikk

Spillets kjernefunksjonalitet gjennom playGame-funksjonen:

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

Forklaring: Funksjonen playGame utgjør hovedspill-løkken. Den bruker rl.question for å be brukeren om en gjetning. Hvis gjetningen er gyldig, sjekker funksjonen om gjetningen samsvarer med det hemmelige tallet. Hvis ikke, gis tilbakemelding til brukeren og spill-løkken fortsetter rekursivt.

Steg 5: Lagre spillresultat

Implementer logikken for å lagre brukerens spillprestasjoner i filen 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.');
  }
}

Forklaring: Funksjonen saveGameResult bruker fs.promises for å legge til spillresultatet i en fil kalt game_results.txt. Den gir tilbakemelding om lagringen av resultatet var vellykket eller mislykket.

Steg 6: Start spillet

Opprett velkomstmelding og start spillet:

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

Forklaring: Vi viser en velkomstmelding og starter spill-løkken ved å kalle funksjonen playGame.

🎉 Konklusjon: Seiersrunde

Ved å utvikle Gjett Tallet-spillet, har du fått verdifull erfaring med å designe interaktive og engasjerende konsollapplikasjoner. Dette eksempelet viser samspillet mellom brukerinput, generering av tilfeldige tall, validering og filhåndtering, noe som resulterer i en engasjerende spillopplevelse.

👨‍💻 Full App-kode

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 8
some-alt