Bygga en Gissningsspel-Konsolapplikation
I detta kapitel får du möjlighet att utveckla dina färdigheter i att bygga konsolapplikationer när vi fördjupar oss i skapandet av det spännande Gissa numret-spelet. Detta interaktiva spel utmanar spelare att använda sin intuition för att gissa ett slumpmässigt genererat nummer inom ett fördefinierat intervall. Under resans gång kommer vi att utforska grundläggande koncept såsom
- Slumpmässig talgenerering;
- Inmatningsvalidering;
- Användarinteraktion;
- Även spara spelresultat till en fil.
Utmaning
Föreställ dig att du utforskar en app som lovar spänning och nyfikenhet. Spelare bjuds in att gissa ett mystiskt valt nummer inom ett fördefinierat intervall. Appen ger omedelbar återkoppling på varje gissning och håller noggrant räkning på antalet försök.
Detta praktiska exempel är din möjlighet att finslipa dina färdigheter i att bygga CLI-appar och visar konsten att skapa interaktiva program.
Slutlig app
Se magin i praktiken! Nedan visas en GIF som illustrerar det spännande Gissa numret-spelet som du kommer att skapa:
Bygga en konsolapplikation för gissningsspel
Du står inför två vägar. Det första alternativet lockar dig att påbörja resan utan hjälp, medan det andra erbjuder en hjälpsam guide för att säkerställa din framgång. Oavsett om du dyker in på egen hand eller följer den strukturerade guiden väntar en fascinerande upplevelse som ger dig en funktionell och engagerande konsolapplikation.
Huvudplan
- Steg 1: Installation och initialisering;
- Steg 2: Definiera spelparametrar;
- Steg 3: Definiera hjälpfunktioner;
- Steg 4: Spellogik;
- Steg 5: Spara spelresultat;
- Steg 6: Starta spelet;
- Slutsats;
- Komplett programkod.
Steg 1: Uppstart och initialiseringar
Förbered arbetsytan genom att skapa en ny katalog och en fil med namnet app.js. I denna fil importeras de nödvändiga modulerna:
const readline = require('readline');
const fs = require('fs').promises;
Skapa ett Readline-gränssnitt:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Förklaring: De nödvändiga modulerna importeras: readline för användarinteraktion och fs.promises för filoperationer. Därefter skapas ett Readline-gränssnitt med namnet rl för att hantera in- och utmatning.
Steg 2: Definiera spelparametrar
Ange minsta och största tal:
const minNumber = 1;
const maxNumber = 100;
Generera det hemliga talet:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Initiera räknaren för försök:
let attempts = 0;
Förklaring: Vi definierar intervallet av tal (minNumber och maxNumber) inom vilket det hemliga talet kommer att genereras. Det hemliga talet genereras slumpmässigt med hjälp av Math.random() och tilldelas secretNumber. Variabeln attempts initieras för att hålla reda på användarens försök.
Steg 3: Definiera hjälpfunktioner
Utrusta med en hjälpfunktion för felfri validering:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Förklaring: Funktionen isValidGuess kontrollerar om användarens gissning är ett giltigt tal inom det angivna intervallet (minNumber till maxNumber).
Steg 4: Spellogik
Spelets kärnmekanik via funktionen 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();
}
});
}
Förklaring: Funktionen playGame utgör spelets huvudloop. Den använder rl.question för att be användaren om en gissning. Om gissningen är giltig kontrollerar funktionen om gissningen matchar det hemliga talet. Om inte, ges återkoppling till användaren och spellopen fortsätter rekursivt.
Steg 5: Spara spelresultat
Implementera logiken för att spara användarens spelprestationer 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.');
}
}
Förklaring: Funktionen saveGameResult använder fs.promises för att lägga till spelresultatet i en fil med namnet game_results.txt. Den ger återkoppling om det lyckades eller misslyckades att spara resultatet.
Steg 6: Starta spelet
Skapa välkomstmeddelandet och starta spelet:
console.log('Welcome to the Guess the Number game!');
playGame();
Förklaring: Vi visar ett välkomstmeddelande och startar spel-loopen genom att anropa funktionen playGame.
Fullständig appkod
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();
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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 result to the file?
Awesome!
Completion rate improved to 2.56
Bygga en Gissningsspel-Konsolapplikation
Svep för att visa menyn
I detta kapitel får du möjlighet att utveckla dina färdigheter i att bygga konsolapplikationer när vi fördjupar oss i skapandet av det spännande Gissa numret-spelet. Detta interaktiva spel utmanar spelare att använda sin intuition för att gissa ett slumpmässigt genererat nummer inom ett fördefinierat intervall. Under resans gång kommer vi att utforska grundläggande koncept såsom
- Slumpmässig talgenerering;
- Inmatningsvalidering;
- Användarinteraktion;
- Även spara spelresultat till en fil.
Utmaning
Föreställ dig att du utforskar en app som lovar spänning och nyfikenhet. Spelare bjuds in att gissa ett mystiskt valt nummer inom ett fördefinierat intervall. Appen ger omedelbar återkoppling på varje gissning och håller noggrant räkning på antalet försök.
Detta praktiska exempel är din möjlighet att finslipa dina färdigheter i att bygga CLI-appar och visar konsten att skapa interaktiva program.
Slutlig app
Se magin i praktiken! Nedan visas en GIF som illustrerar det spännande Gissa numret-spelet som du kommer att skapa:
Bygga en konsolapplikation för gissningsspel
Du står inför två vägar. Det första alternativet lockar dig att påbörja resan utan hjälp, medan det andra erbjuder en hjälpsam guide för att säkerställa din framgång. Oavsett om du dyker in på egen hand eller följer den strukturerade guiden väntar en fascinerande upplevelse som ger dig en funktionell och engagerande konsolapplikation.
Huvudplan
- Steg 1: Installation och initialisering;
- Steg 2: Definiera spelparametrar;
- Steg 3: Definiera hjälpfunktioner;
- Steg 4: Spellogik;
- Steg 5: Spara spelresultat;
- Steg 6: Starta spelet;
- Slutsats;
- Komplett programkod.
Steg 1: Uppstart och initialiseringar
Förbered arbetsytan genom att skapa en ny katalog och en fil med namnet app.js. I denna fil importeras de nödvändiga modulerna:
const readline = require('readline');
const fs = require('fs').promises;
Skapa ett Readline-gränssnitt:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Förklaring: De nödvändiga modulerna importeras: readline för användarinteraktion och fs.promises för filoperationer. Därefter skapas ett Readline-gränssnitt med namnet rl för att hantera in- och utmatning.
Steg 2: Definiera spelparametrar
Ange minsta och största tal:
const minNumber = 1;
const maxNumber = 100;
Generera det hemliga talet:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Initiera räknaren för försök:
let attempts = 0;
Förklaring: Vi definierar intervallet av tal (minNumber och maxNumber) inom vilket det hemliga talet kommer att genereras. Det hemliga talet genereras slumpmässigt med hjälp av Math.random() och tilldelas secretNumber. Variabeln attempts initieras för att hålla reda på användarens försök.
Steg 3: Definiera hjälpfunktioner
Utrusta med en hjälpfunktion för felfri validering:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Förklaring: Funktionen isValidGuess kontrollerar om användarens gissning är ett giltigt tal inom det angivna intervallet (minNumber till maxNumber).
Steg 4: Spellogik
Spelets kärnmekanik via funktionen 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();
}
});
}
Förklaring: Funktionen playGame utgör spelets huvudloop. Den använder rl.question för att be användaren om en gissning. Om gissningen är giltig kontrollerar funktionen om gissningen matchar det hemliga talet. Om inte, ges återkoppling till användaren och spellopen fortsätter rekursivt.
Steg 5: Spara spelresultat
Implementera logiken för att spara användarens spelprestationer 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.');
}
}
Förklaring: Funktionen saveGameResult använder fs.promises för att lägga till spelresultatet i en fil med namnet game_results.txt. Den ger återkoppling om det lyckades eller misslyckades att spara resultatet.
Steg 6: Starta spelet
Skapa välkomstmeddelandet och starta spelet:
console.log('Welcome to the Guess the Number game!');
playGame();
Förklaring: Vi visar ett välkomstmeddelande och startar spel-loopen genom att anropa funktionen playGame.
Fullständig appkod
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();
Tack för dina kommentarer!