Creazione di un'Applicazione Console per il Gioco dell'Indovinello
In questo capitolo, preparati a migliorare le tue competenze nello sviluppo di applicazioni console mentre ci immergiamo nella creazione di un entusiasmante 🎮 Indovina il Numero 🔢. Questo gioco interattivo metterà alla prova l'intuizione dei giocatori, che dovranno indovinare un numero generato casualmente all'interno di un intervallo predefinito. Durante il percorso, esploreremo concetti fondamentali come:
- 🎲 Generazione di numeri casuali;
- ✅ Validazione dell'input;
- 🤝 Interazione con l'utente;
- 💾 Salvataggio dei risultati di gioco su un file.
🏆 Sfida in Arrivo
Immagina di immergerti in un'app che promette emozione e mistero. I giocatori sono invitati a indovinare un numero scelto misteriosamente all'interno di un intervallo predefinito. L'app fornisce un feedback immediato su ogni tentativo e tiene un conteggio preciso delle prove effettuate.
Questo esempio pratico è l'occasione ideale per affinare le tue competenze nella creazione di applicazioni CLI e mostra l'arte di sviluppare programmi interattivi.
🚀 App Finale
Guarda la magia in azione! Di seguito trovi una GIF che illustra l'entusiasmante app Indovina il Numero che andrai a realizzare:
Creazione di un'applicazione console per il gioco dell'indovinello
Ti vengono presentati due percorsi. La prima opzione ti invita a intraprendere il viaggio senza assistenza, mentre la seconda offre una guida utile per garantire il successo. Che tu scelga di immergerti con audacia o di seguire la guida strutturata, ti aspetta un'esperienza affascinante che ti porterà a realizzare un'app console funzionale e coinvolgente.
Piano principale
- 👉 Passo 1: Configurazione e inizializzazioni;
- 👉 Passo 2: Definizione dei parametri di gioco;
- 👉 Passo 3: Definizione delle funzioni di utilità;
- 👉 Passo 4: Logica di gioco;
- 👉 Passo 5: Salvataggio del risultato di gioco;
- 👉 Passo 6: Avvio del gioco;
- 🎉 Conclusione;
- 🏁 Codice completo dell'app.
Passo 1: Configurazione e inizializzazioni
Prepara la base creando una nuova directory e un file chiamato app.js. All'interno di questo file, includiamo i moduli necessari:
const readline = require('readline');
const fs = require('fs').promises;
Crea un'interfaccia Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Spiegazione: Importazione dei moduli necessari: readline per l'interazione con l'utente e fs.promises per le operazioni sui file. Successivamente, creazione di un'interfaccia Readline denominata rl per gestire input e output.
Passaggio 2: Definizione dei parametri di gioco
Impostazione dei numeri minimo e massimo:
const minNumber = 1;
const maxNumber = 100;
Generazione del numero segreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inizializzare il contatore dei tentativi:
let attempts = 0;
Spiegazione: Definiamo l'intervallo di numeri (minNumber e maxNumber) all'interno del quale verrà generato il numero segreto. Il numero segreto viene generato casualmente utilizzando Math.random() e assegnato a secretNumber. La variabile attempts viene inizializzata per tenere traccia dei tentativi dell'utente.
Passaggio 3: Definire le Funzioni di Utilità
Dotarsi di una funzione di utilità per una validazione impeccabile:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Spiegazione: La funzione isValidGuess verifica se il tentativo dell'utente è un numero valido compreso nell'intervallo specificato (minNumber a maxNumber).
Passaggio 4: Logica del Gioco
Le meccaniche principali del gioco tramite la funzione 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();
}
});
}
Spiegazione: La funzione playGame costituisce il ciclo principale del gioco. Utilizza rl.question per chiedere all'utente di inserire un tentativo. Se il tentativo è valido, la funzione verifica se corrisponde al numero segreto. In caso contrario, fornisce un feedback all'utente e continua ricorsivamente il ciclo del gioco.
Passaggio 5: Salvataggio del Risultato di Gioco
Implementare la logica per salvare i risultati ottenuti dall'utente nel file 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.');
}
}
Spiegazione: La funzione saveGameResult utilizza fs.promises per aggiungere il risultato del gioco a un file denominato game_results.txt. Fornisce un feedback sul successo o sul fallimento del salvataggio del risultato.
Passaggio 6: Avvio del Gioco
Creare il messaggio di benvenuto e avviare il gioco:
console.log('Welcome to the Guess the Number game!');
playGame();
Spiegazione: Viene visualizzato un messaggio di benvenuto e si avvia il ciclo di gioco chiamando la funzione playGame.
🎉 Conclusione: Giro della Vittoria
Sviluppando l'applicazione Indovina il Numero, hai acquisito esperienza preziosa nella progettazione di applicazioni console interattive e coinvolgenti. Questo esempio mostra la combinazione di input utente, generazione di numeri casuali, validazione e manipolazione di file, offrendo un'esperienza di gioco interessante.
👨💻 Codice Completo dell'Applicazione
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();
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 2.56
Creazione di un'Applicazione Console per il Gioco dell'Indovinello
Scorri per mostrare il menu
In questo capitolo, preparati a migliorare le tue competenze nello sviluppo di applicazioni console mentre ci immergiamo nella creazione di un entusiasmante 🎮 Indovina il Numero 🔢. Questo gioco interattivo metterà alla prova l'intuizione dei giocatori, che dovranno indovinare un numero generato casualmente all'interno di un intervallo predefinito. Durante il percorso, esploreremo concetti fondamentali come:
- 🎲 Generazione di numeri casuali;
- ✅ Validazione dell'input;
- 🤝 Interazione con l'utente;
- 💾 Salvataggio dei risultati di gioco su un file.
🏆 Sfida in Arrivo
Immagina di immergerti in un'app che promette emozione e mistero. I giocatori sono invitati a indovinare un numero scelto misteriosamente all'interno di un intervallo predefinito. L'app fornisce un feedback immediato su ogni tentativo e tiene un conteggio preciso delle prove effettuate.
Questo esempio pratico è l'occasione ideale per affinare le tue competenze nella creazione di applicazioni CLI e mostra l'arte di sviluppare programmi interattivi.
🚀 App Finale
Guarda la magia in azione! Di seguito trovi una GIF che illustra l'entusiasmante app Indovina il Numero che andrai a realizzare:
Creazione di un'applicazione console per il gioco dell'indovinello
Ti vengono presentati due percorsi. La prima opzione ti invita a intraprendere il viaggio senza assistenza, mentre la seconda offre una guida utile per garantire il successo. Che tu scelga di immergerti con audacia o di seguire la guida strutturata, ti aspetta un'esperienza affascinante che ti porterà a realizzare un'app console funzionale e coinvolgente.
Piano principale
- 👉 Passo 1: Configurazione e inizializzazioni;
- 👉 Passo 2: Definizione dei parametri di gioco;
- 👉 Passo 3: Definizione delle funzioni di utilità;
- 👉 Passo 4: Logica di gioco;
- 👉 Passo 5: Salvataggio del risultato di gioco;
- 👉 Passo 6: Avvio del gioco;
- 🎉 Conclusione;
- 🏁 Codice completo dell'app.
Passo 1: Configurazione e inizializzazioni
Prepara la base creando una nuova directory e un file chiamato app.js. All'interno di questo file, includiamo i moduli necessari:
const readline = require('readline');
const fs = require('fs').promises;
Crea un'interfaccia Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Spiegazione: Importazione dei moduli necessari: readline per l'interazione con l'utente e fs.promises per le operazioni sui file. Successivamente, creazione di un'interfaccia Readline denominata rl per gestire input e output.
Passaggio 2: Definizione dei parametri di gioco
Impostazione dei numeri minimo e massimo:
const minNumber = 1;
const maxNumber = 100;
Generazione del numero segreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inizializzare il contatore dei tentativi:
let attempts = 0;
Spiegazione: Definiamo l'intervallo di numeri (minNumber e maxNumber) all'interno del quale verrà generato il numero segreto. Il numero segreto viene generato casualmente utilizzando Math.random() e assegnato a secretNumber. La variabile attempts viene inizializzata per tenere traccia dei tentativi dell'utente.
Passaggio 3: Definire le Funzioni di Utilità
Dotarsi di una funzione di utilità per una validazione impeccabile:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Spiegazione: La funzione isValidGuess verifica se il tentativo dell'utente è un numero valido compreso nell'intervallo specificato (minNumber a maxNumber).
Passaggio 4: Logica del Gioco
Le meccaniche principali del gioco tramite la funzione 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();
}
});
}
Spiegazione: La funzione playGame costituisce il ciclo principale del gioco. Utilizza rl.question per chiedere all'utente di inserire un tentativo. Se il tentativo è valido, la funzione verifica se corrisponde al numero segreto. In caso contrario, fornisce un feedback all'utente e continua ricorsivamente il ciclo del gioco.
Passaggio 5: Salvataggio del Risultato di Gioco
Implementare la logica per salvare i risultati ottenuti dall'utente nel file 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.');
}
}
Spiegazione: La funzione saveGameResult utilizza fs.promises per aggiungere il risultato del gioco a un file denominato game_results.txt. Fornisce un feedback sul successo o sul fallimento del salvataggio del risultato.
Passaggio 6: Avvio del Gioco
Creare il messaggio di benvenuto e avviare il gioco:
console.log('Welcome to the Guess the Number game!');
playGame();
Spiegazione: Viene visualizzato un messaggio di benvenuto e si avvia il ciclo di gioco chiamando la funzione playGame.
🎉 Conclusione: Giro della Vittoria
Sviluppando l'applicazione Indovina il Numero, hai acquisito esperienza preziosa nella progettazione di applicazioni console interattive e coinvolgenti. Questo esempio mostra la combinazione di input utente, generazione di numeri casuali, validazione e manipolazione di file, offrendo un'esperienza di gioco interessante.
👨💻 Codice Completo dell'Applicazione
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();
Grazie per i tuoi commenti!