Creación de una Aplicación de Consola de Juego de Adivinanzas
En este capítulo, prepárate para mejorar tus habilidades en el desarrollo de aplicaciones de consola mientras nos sumergimos en la creación de un emocionante 🎮 Adivina el Número 🔢. Este juego interactivo desafiará a los jugadores a poner a prueba su intuición adivinando un número generado aleatoriamente dentro de un rango predefinido. A lo largo del proceso, exploraremos conceptos fundamentales como:
- 🎲 Generación de números aleatorios;
- ✅ Validación de entradas;
- 🤝 Interacción con el usuario;
- 💾 Incluso guardar los resultados del juego en un archivo.
🏆 Desafío por Delante
Imagina sumergirte en una aplicación que promete emoción e intriga. Se invita a los jugadores a adivinar un número elegido misteriosamente dentro de un rango predefinido. La aplicación ofrece retroalimentación instantánea en cada intento y lleva un registro meticuloso de los intentos realizados.
Este ejemplo práctico es una oportunidad para perfeccionar habilidades en la construcción de aplicaciones CLI y demuestra el arte de crear programas interactivos.
🚀 Aplicación Resultante
¡Observa la magia en acción! A continuación se muestra un GIF que ilustra la emocionante aplicación Adivina el Número que estarás desarrollando:
Creación de una aplicación de consola de juego de adivinanzas
Se presentan dos caminos. La primera opción invita a embarcarse en la experiencia sin asistencia, mientras que la segunda ofrece una guía útil para asegurar el éxito. Ya sea que te aventures por tu cuenta o sigas la guía estructurada, vivirás una experiencia fascinante que te permitirá obtener una aplicación de consola funcional y atractiva.
Plan maestro
- 👉 Paso 1: Configuración e inicializaciones;
- 👉 Paso 2: Definir los parámetros del juego;
- 👉 Paso 3: Definir funciones utilitarias;
- 👉 Paso 4: Lógica del juego;
- 👉 Paso 5: Guardar el resultado del juego;
- 👉 Paso 6: Iniciar el juego;
- 🎉 Conclusión;
- 🏁 Código completo de la aplicación.
Paso 1: Configuración e inicializaciones
Prepara el entorno creando un nuevo directorio y un archivo llamado app.js. Dentro de este archivo, se importan los módulos necesarios:
const readline = require('readline');
const fs = require('fs').promises;
Crear una interfaz de Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explicación: Se importan los módulos necesarios: readline para la interacción con el usuario y fs.promises para las operaciones con archivos. Luego, se crea una interfaz Readline llamada rl para gestionar la entrada y salida.
Paso 2: Definir los parámetros del juego
Establecer los números mínimo y máximo:
const minNumber = 1;
const maxNumber = 100;
Generar el número secreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inicializar el contador de intentos:
let attempts = 0;
Explicación: Se define el rango de números (minNumber y maxNumber) dentro del cual se generará el número secreto. El número secreto se genera aleatoriamente utilizando Math.random() y se asigna a secretNumber. La variable attempts se inicializa para llevar el registro de los intentos del usuario.
Paso 3: Definir funciones utilitarias
Equipar con una función utilitaria para una validación impecable:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explicación: La función isValidGuess verifica si la suposición del usuario es un número válido dentro del rango especificado (minNumber a maxNumber).
Paso 4: Lógica del juego
La mecánica principal del juego a través de la función 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();
}
});
}
Explicación: La función playGame constituye el bucle principal del juego. Utiliza rl.question para solicitar al usuario una suposición. Si la suposición es válida, la función verifica si coincide con el número secreto. Si no es así, proporciona retroalimentación al usuario y continúa el bucle del juego de forma recursiva.
Paso 5: Guardar el resultado del juego
Implementar la lógica para guardar los logros del usuario en el archivo 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.');
}
}
Explicación: La función saveGameResult utiliza fs.promises para agregar el resultado del juego a un archivo llamado game_results.txt. Proporciona retroalimentación sobre el éxito o fallo al guardar el resultado.
Paso 6: Iniciar el juego
Crear el mensaje de bienvenida e iniciar el juego:
console.log('Welcome to the Guess the Number game!');
playGame();
Explicación: Mostramos un mensaje de bienvenida e iniciamos el ciclo del juego llamando a la función playGame.
🎉 Conclusión: Vuelta de la victoria
Al desarrollar la Aplicación de Adivina el Número, se ha adquirido experiencia valiosa en el diseño de aplicaciones de consola interactivas y atractivas. Este ejemplo demuestra la combinación de entrada del usuario, generación de números aleatorios, validación y manipulación de archivos, resultando en una experiencia de juego convincente.
👨💻 Código Completo de la Aplicación
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();
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 2.56
Creación de una Aplicación de Consola de Juego de Adivinanzas
Desliza para mostrar el menú
En este capítulo, prepárate para mejorar tus habilidades en el desarrollo de aplicaciones de consola mientras nos sumergimos en la creación de un emocionante 🎮 Adivina el Número 🔢. Este juego interactivo desafiará a los jugadores a poner a prueba su intuición adivinando un número generado aleatoriamente dentro de un rango predefinido. A lo largo del proceso, exploraremos conceptos fundamentales como:
- 🎲 Generación de números aleatorios;
- ✅ Validación de entradas;
- 🤝 Interacción con el usuario;
- 💾 Incluso guardar los resultados del juego en un archivo.
🏆 Desafío por Delante
Imagina sumergirte en una aplicación que promete emoción e intriga. Se invita a los jugadores a adivinar un número elegido misteriosamente dentro de un rango predefinido. La aplicación ofrece retroalimentación instantánea en cada intento y lleva un registro meticuloso de los intentos realizados.
Este ejemplo práctico es una oportunidad para perfeccionar habilidades en la construcción de aplicaciones CLI y demuestra el arte de crear programas interactivos.
🚀 Aplicación Resultante
¡Observa la magia en acción! A continuación se muestra un GIF que ilustra la emocionante aplicación Adivina el Número que estarás desarrollando:
Creación de una aplicación de consola de juego de adivinanzas
Se presentan dos caminos. La primera opción invita a embarcarse en la experiencia sin asistencia, mientras que la segunda ofrece una guía útil para asegurar el éxito. Ya sea que te aventures por tu cuenta o sigas la guía estructurada, vivirás una experiencia fascinante que te permitirá obtener una aplicación de consola funcional y atractiva.
Plan maestro
- 👉 Paso 1: Configuración e inicializaciones;
- 👉 Paso 2: Definir los parámetros del juego;
- 👉 Paso 3: Definir funciones utilitarias;
- 👉 Paso 4: Lógica del juego;
- 👉 Paso 5: Guardar el resultado del juego;
- 👉 Paso 6: Iniciar el juego;
- 🎉 Conclusión;
- 🏁 Código completo de la aplicación.
Paso 1: Configuración e inicializaciones
Prepara el entorno creando un nuevo directorio y un archivo llamado app.js. Dentro de este archivo, se importan los módulos necesarios:
const readline = require('readline');
const fs = require('fs').promises;
Crear una interfaz de Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explicación: Se importan los módulos necesarios: readline para la interacción con el usuario y fs.promises para las operaciones con archivos. Luego, se crea una interfaz Readline llamada rl para gestionar la entrada y salida.
Paso 2: Definir los parámetros del juego
Establecer los números mínimo y máximo:
const minNumber = 1;
const maxNumber = 100;
Generar el número secreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inicializar el contador de intentos:
let attempts = 0;
Explicación: Se define el rango de números (minNumber y maxNumber) dentro del cual se generará el número secreto. El número secreto se genera aleatoriamente utilizando Math.random() y se asigna a secretNumber. La variable attempts se inicializa para llevar el registro de los intentos del usuario.
Paso 3: Definir funciones utilitarias
Equipar con una función utilitaria para una validación impecable:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explicación: La función isValidGuess verifica si la suposición del usuario es un número válido dentro del rango especificado (minNumber a maxNumber).
Paso 4: Lógica del juego
La mecánica principal del juego a través de la función 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();
}
});
}
Explicación: La función playGame constituye el bucle principal del juego. Utiliza rl.question para solicitar al usuario una suposición. Si la suposición es válida, la función verifica si coincide con el número secreto. Si no es así, proporciona retroalimentación al usuario y continúa el bucle del juego de forma recursiva.
Paso 5: Guardar el resultado del juego
Implementar la lógica para guardar los logros del usuario en el archivo 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.');
}
}
Explicación: La función saveGameResult utiliza fs.promises para agregar el resultado del juego a un archivo llamado game_results.txt. Proporciona retroalimentación sobre el éxito o fallo al guardar el resultado.
Paso 6: Iniciar el juego
Crear el mensaje de bienvenida e iniciar el juego:
console.log('Welcome to the Guess the Number game!');
playGame();
Explicación: Mostramos un mensaje de bienvenida e iniciamos el ciclo del juego llamando a la función playGame.
🎉 Conclusión: Vuelta de la victoria
Al desarrollar la Aplicación de Adivina el Número, se ha adquirido experiencia valiosa en el diseño de aplicaciones de consola interactivas y atractivas. Este ejemplo demuestra la combinación de entrada del usuario, generación de números aleatorios, validación y manipulación de archivos, resultando en una experiencia de juego convincente.
👨💻 Código Completo de la Aplicación
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();
¡Gracias por tus comentarios!