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 🔢 spelappen. Detta interaktiva spel utmanar spelare att använda sin intuition genom 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 väntar
Föreställ dig att fördjupa dig i 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 chans att finslipa dina färdigheter i att bygga CLI-appar och visar konsten att skapa interaktiva program.
🚀 Resultatande app
Se magin i praktiken! Nedan visas en GIF som illustrerar den spännande Gissa numret-spelappen som du kommer att skapa:
Bygga en gissningsspel-konsolapp
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 kastar dig in modigt eller följer den strukturerade guiden, väntar en fascinerande upplevelse som lämnar dig med en funktionell och engagerande konsolapplikation.
Huvudplan
- 👉 Steg 1: Installation och initiering;
- 👉 Steg 2: Definiera spelparametrar;
- 👉 Steg 3: Definiera hjälpfunktioner;
- 👉 Steg 4: Spellogik;
- 👉 Steg 5: Spara spelresultat;
- 👉 Steg 6: Starta spelet;
- 🎉 Slutsats;
- 🏁 Komplett appkod.
Steg 1: Installation och initiering
Förbered arbetsytan genom att skapa en ny katalog och en fil med namnet app.js. I denna fil importerar vi 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: Nödvändiga moduler 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: Intervallet för siffror (minNumber och maxNumber) definieras, inom vilket det hemliga numret genereras. Det hemliga numret 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 centrala spel-loop. 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 spel-loopen 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 resultatet sparades eller om det misslyckades.
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.
🎉 Slutsats: Segervarv
Genom att utveckla Gissa numret-spelet har du fått värdefull erfarenhet av att utforma interaktiva och engagerande konsolapplikationer. Detta exempel visar på sammansmältningen av användarinmatning, slumptalsgenerering, validering och filhantering, vilket resulterar i en övertygande spelupplevelse.
👨💻 Fullständig programkod
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 results 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 🔢 spelappen. Detta interaktiva spel utmanar spelare att använda sin intuition genom 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 väntar
Föreställ dig att fördjupa dig i 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 chans att finslipa dina färdigheter i att bygga CLI-appar och visar konsten att skapa interaktiva program.
🚀 Resultatande app
Se magin i praktiken! Nedan visas en GIF som illustrerar den spännande Gissa numret-spelappen som du kommer att skapa:
Bygga en gissningsspel-konsolapp
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 kastar dig in modigt eller följer den strukturerade guiden, väntar en fascinerande upplevelse som lämnar dig med en funktionell och engagerande konsolapplikation.
Huvudplan
- 👉 Steg 1: Installation och initiering;
- 👉 Steg 2: Definiera spelparametrar;
- 👉 Steg 3: Definiera hjälpfunktioner;
- 👉 Steg 4: Spellogik;
- 👉 Steg 5: Spara spelresultat;
- 👉 Steg 6: Starta spelet;
- 🎉 Slutsats;
- 🏁 Komplett appkod.
Steg 1: Installation och initiering
Förbered arbetsytan genom att skapa en ny katalog och en fil med namnet app.js. I denna fil importerar vi 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: Nödvändiga moduler 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: Intervallet för siffror (minNumber och maxNumber) definieras, inom vilket det hemliga numret genereras. Det hemliga numret 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 centrala spel-loop. 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 spel-loopen 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 resultatet sparades eller om det misslyckades.
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.
🎉 Slutsats: Segervarv
Genom att utveckla Gissa numret-spelet har du fått värdefull erfarenhet av att utforma interaktiva och engagerande konsolapplikationer. Detta exempel visar på sammansmältningen av användarinmatning, slumptalsgenerering, validering och filhantering, vilket resulterar i en övertygande spelupplevelse.
👨💻 Fullständig programkod
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!