Construindo um Aplicativo de Adivinhação no Console
Neste capítulo, prepare-se para aprimorar suas habilidades em aplicações de console enquanto exploramos a criação de um empolgante 🎮 Adivinhe o Número 🔢. Este jogo interativo desafia os jogadores a exercitarem sua intuição ao tentar adivinhar um número gerado aleatoriamente dentro de um intervalo pré-definido. Ao longo do caminho, vamos desvendar os fundamentos de conceitos como:
- 🎲 Geração de números aleatórios;
- ✅ Validação de entrada;
- 🤝 Interação com o usuário;
- 💾 Até mesmo salvar os resultados do jogo em um arquivo.
🏆 Desafio à Vista
Imagine explorar um aplicativo que promete emoção e mistério. Os jogadores são convidados a adivinhar um número escolhido misteriosamente dentro de um intervalo pré-definido. O aplicativo oferece feedback instantâneo para cada tentativa e mantém um registro detalhado das tentativas realizadas.
Este exemplo prático é sua oportunidade de aprimorar habilidades na construção de aplicativos CLI e demonstra a arte de criar programas interativos.
🚀 Aplicativo Resultante
Veja a mágica em ação! Abaixo está um GIF ilustrando o empolgante jogo Adivinhe o Número que você irá desenvolver:
Construindo um Aplicativo de Adivinhação no Console
Você se depara com dois caminhos. A primeira opção convida você a embarcar na jornada sem assistência, enquanto a segunda oferece um guia útil para garantir seu sucesso. Seja mergulhando de forma ousada ou seguindo o guia estruturado, você terá uma experiência fascinante que resultará em um aplicativo de console funcional e envolvente.
Plano Mestre
- 👉 Passo 1: Configuração e Inicializações;
- 👉 Passo 2: Definir Parâmetros do Jogo;
- 👉 Passo 3: Definir Funções Utilitárias;
- 👉 Passo 4: Lógica do Jogo;
- 👉 Passo 5: Salvar Resultado do Jogo;
- 👉 Passo 6: Iniciar o Jogo;
- 🎉 Conclusão;
- 🏁 Código Completo do Aplicativo.
Passo 1: Configuração e Inicializações
Prepare o ambiente criando um novo diretório e um arquivo chamado app.js. Dentro deste arquivo, importe os módulos necessários:
const readline = require('readline');
const fs = require('fs').promises;
Crie uma interface Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explicação: Importação dos módulos necessários: readline para interação com o usuário e fs.promises para operações com arquivos. Criação de uma interface Readline chamada rl para gerenciar entrada e saída.
Etapa 2: Definição dos Parâmetros do Jogo
Definição dos números mínimo e máximo:
const minNumber = 1;
const maxNumber = 100;
Geração do número secreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inicializar o contador de tentativas:
let attempts = 0;
Explicação: Definimos o intervalo de números (minNumber e maxNumber) dentro do qual o número secreto será gerado. O número secreto é gerado aleatoriamente usando Math.random() e atribuído à variável secretNumber. A variável attempts é inicializada para acompanhar as tentativas do usuário.
Passo 3: Definir Funções Utilitárias
Utilizar uma função utilitária para validação precisa:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explicação: A função isValidGuess verifica se o palpite do usuário é um número válido dentro do intervalo especificado (minNumber a maxNumber).
Etapa 4: Lógica do Jogo
A mecânica central do jogo por meio da função 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();
}
});
}
Explicação: A função playGame constitui o loop principal do jogo. Ela utiliza rl.question para solicitar um palpite ao usuário. Se o palpite for válido, a função verifica se ele corresponde ao número secreto. Caso contrário, fornece um retorno ao usuário e continua o loop do jogo de forma recursiva.
Etapa 5: Salvar o Resultado do Jogo
Implemente a lógica para salvar as conquistas do usuário no jogo no arquivo 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.');
}
}
Explicação: A função saveGameResult utiliza fs.promises para adicionar o resultado do jogo a um arquivo chamado game_results.txt. Ela fornece um retorno sobre o sucesso ou falha ao salvar o resultado.
Etapa 6: Iniciar o Jogo
Crie a mensagem de boas-vindas e inicie o jogo:
console.log('Welcome to the Guess the Number game!');
playGame();
Explicação: Exibimos uma mensagem de boas-vindas e iniciamos o loop do jogo chamando a função playGame.
🎉 Conclusão: Volta da Vitória
Ao desenvolver o App Jogo de Adivinhação de Números, você adquiriu experiência valiosa em projetar aplicações de console interativas e envolventes. Este exemplo demonstra a integração de entrada do usuário, geração de números aleatórios, validação e manipulação de arquivos, resultando em uma experiência de jogo atrativa.
👨💻 Código Completo do App
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();
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.56
Construindo um Aplicativo de Adivinhação no Console
Deslize para mostrar o menu
Neste capítulo, prepare-se para aprimorar suas habilidades em aplicações de console enquanto exploramos a criação de um empolgante 🎮 Adivinhe o Número 🔢. Este jogo interativo desafia os jogadores a exercitarem sua intuição ao tentar adivinhar um número gerado aleatoriamente dentro de um intervalo pré-definido. Ao longo do caminho, vamos desvendar os fundamentos de conceitos como:
- 🎲 Geração de números aleatórios;
- ✅ Validação de entrada;
- 🤝 Interação com o usuário;
- 💾 Até mesmo salvar os resultados do jogo em um arquivo.
🏆 Desafio à Vista
Imagine explorar um aplicativo que promete emoção e mistério. Os jogadores são convidados a adivinhar um número escolhido misteriosamente dentro de um intervalo pré-definido. O aplicativo oferece feedback instantâneo para cada tentativa e mantém um registro detalhado das tentativas realizadas.
Este exemplo prático é sua oportunidade de aprimorar habilidades na construção de aplicativos CLI e demonstra a arte de criar programas interativos.
🚀 Aplicativo Resultante
Veja a mágica em ação! Abaixo está um GIF ilustrando o empolgante jogo Adivinhe o Número que você irá desenvolver:
Construindo um Aplicativo de Adivinhação no Console
Você se depara com dois caminhos. A primeira opção convida você a embarcar na jornada sem assistência, enquanto a segunda oferece um guia útil para garantir seu sucesso. Seja mergulhando de forma ousada ou seguindo o guia estruturado, você terá uma experiência fascinante que resultará em um aplicativo de console funcional e envolvente.
Plano Mestre
- 👉 Passo 1: Configuração e Inicializações;
- 👉 Passo 2: Definir Parâmetros do Jogo;
- 👉 Passo 3: Definir Funções Utilitárias;
- 👉 Passo 4: Lógica do Jogo;
- 👉 Passo 5: Salvar Resultado do Jogo;
- 👉 Passo 6: Iniciar o Jogo;
- 🎉 Conclusão;
- 🏁 Código Completo do Aplicativo.
Passo 1: Configuração e Inicializações
Prepare o ambiente criando um novo diretório e um arquivo chamado app.js. Dentro deste arquivo, importe os módulos necessários:
const readline = require('readline');
const fs = require('fs').promises;
Crie uma interface Readline:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explicação: Importação dos módulos necessários: readline para interação com o usuário e fs.promises para operações com arquivos. Criação de uma interface Readline chamada rl para gerenciar entrada e saída.
Etapa 2: Definição dos Parâmetros do Jogo
Definição dos números mínimo e máximo:
const minNumber = 1;
const maxNumber = 100;
Geração do número secreto:
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Inicializar o contador de tentativas:
let attempts = 0;
Explicação: Definimos o intervalo de números (minNumber e maxNumber) dentro do qual o número secreto será gerado. O número secreto é gerado aleatoriamente usando Math.random() e atribuído à variável secretNumber. A variável attempts é inicializada para acompanhar as tentativas do usuário.
Passo 3: Definir Funções Utilitárias
Utilizar uma função utilitária para validação precisa:
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explicação: A função isValidGuess verifica se o palpite do usuário é um número válido dentro do intervalo especificado (minNumber a maxNumber).
Etapa 4: Lógica do Jogo
A mecânica central do jogo por meio da função 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();
}
});
}
Explicação: A função playGame constitui o loop principal do jogo. Ela utiliza rl.question para solicitar um palpite ao usuário. Se o palpite for válido, a função verifica se ele corresponde ao número secreto. Caso contrário, fornece um retorno ao usuário e continua o loop do jogo de forma recursiva.
Etapa 5: Salvar o Resultado do Jogo
Implemente a lógica para salvar as conquistas do usuário no jogo no arquivo 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.');
}
}
Explicação: A função saveGameResult utiliza fs.promises para adicionar o resultado do jogo a um arquivo chamado game_results.txt. Ela fornece um retorno sobre o sucesso ou falha ao salvar o resultado.
Etapa 6: Iniciar o Jogo
Crie a mensagem de boas-vindas e inicie o jogo:
console.log('Welcome to the Guess the Number game!');
playGame();
Explicação: Exibimos uma mensagem de boas-vindas e iniciamos o loop do jogo chamando a função playGame.
🎉 Conclusão: Volta da Vitória
Ao desenvolver o App Jogo de Adivinhação de Números, você adquiriu experiência valiosa em projetar aplicações de console interativas e envolventes. Este exemplo demonstra a integração de entrada do usuário, geração de números aleatórios, validação e manipulação de arquivos, resultando em uma experiência de jogo atrativa.
👨💻 Código Completo do App
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();
Obrigado pelo seu feedback!