Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Exercício: Verificar acesso a nível do jogo

import { createInterface } from "readline";

const rl = createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.question("Quantos pontos você tem?\n> ", (inputPontos) => {
  rl.question("Quantas vidas você tem?\n> ", (inputVidas) => {
    const pontos = Number(inputPontos);
    const vidas = Number(inputVidas);

    if (!Number.isInteger(pontos) || !Number.isInteger(vidas)) {
      console.log("Utilize apenas números inteiros.");
      rl.close();
      return;
    }

    const podeAvancar = pontos >= 50 && vidas >= 1;

    console.log(
      `Você ${podeAvancar ? "pode" : "não pode"} avançar para o próximo nível`,
    );

    rl.close();
  });
});
2 respostas
solução!

Oi, Vitor! Como vai?

Agradeço por compartilhar

Seu projeto ficou bem organizado: você usou readline para receber os dados, converteu as entradas com Number() e validou se os valores eram inteiros com Number.isInteger(), o que deixa a lógica mais segura antes de verificar se o jogador pode avançar.

Uma dica interessante para o futuro é usar uma função para separar a regra de avanço, deixando o código mais fácil de reutilizar e testar.


function podeAvancarDeNivel(pontos, vidas) {
  return pontos >= 50 && vidas >= 1;
}

const resultado = podeAvancarDeNivel(60, 2);
console.log(resultado);

Esse código verifica se a pontuação e as vidas atendem aos criterios e retorna true ou false. Continue praticando essa separação de responsabilidades, pois ela ajuda bastante em projetos maiores.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi, Lorena! Tudo bem? Obrigado pelo feedback e pela dica.

Tenho tentado usar mais funções modulares no meu código justamente pra deixar o fluxo principal mais limpo e direto, evitando misturar responsabilidades diferentes no mesmo lugar. Vou me atentar mais a isso!

Valeu pela orientação! :)