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

Solução para o Jogo de adivinhação

Por favor, poderiam contribuir com uma análise do código?

import java.util.Scanner;
import java.util.Random;

public class JogoAdivinhacao
{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int numeroAleatorio = new Random().nextInt(100);
        //System.out.println(numeroAleatorio); //exibe o número aleatório para fins de teste.
        int tentativas = 0;
        Boolean vencedor = false;

        while(tentativas < 5) {
            System.out.println("Digite um número entre 0 e 100");
            int chute = scanner.nextInt();
            tentativas++;

            if (numeroAleatorio == chute) {
                System.out.println("Parabéns você acertou!!! em: " + tentativas + " tentativas!!!");
                vencedor = true;
                break;
            } else if (numeroAleatorio > chute) {
                System.out.println("Não foi dessa vez! O número é maior do que o seu palpite!");
            } else {
                System.out.println("Quase!!! O número é menor do que o seu palpite!");
            }
        }
            if (tentativas == 5 && vencedor.equals(false)) {
                System.out.println("Você perdeu! O número era: " + numeroAleatorio);
            }
    }
}
2 respostas
solução!

Analisei seu código e pensei nessas dicas:

  1. Comentários de Código:

    • O código possui um comentário que exibe o número aleatório para fins de teste. Esse comentário pode ser útil durante o desenvolvimento, mas é uma boa prática removê-lo em produção para evitar informações desnecessárias no console.
  2. Uso de Boolean:

    • O uso de Boolean para a variável vencedor é redundante. Você pode simplesmente usar boolean em vez de Boolean. Além disso, ao verificar vencedor.equals(false), você pode simplificar para !vencedor.
  3. Limitação de Tentativas:

    • O número máximo de tentativas está fixado em 5. Talvez seja interessante permitir que o usuário configure esse número ou mesmo fazer com que o programa continue até que o jogador acerte.
  4. Validação de Entrada:

    • Não há validação para garantir que o usuário insira um número válido. Se o usuário inserir algo que não seja um número, o programa lançará uma exceção. Seria bom incluir alguma validação para garantir que o usuário insira apenas números.

Aqui está uma versão modificada do código, implementando algumas dessas melhorias:

import java.util.Scanner;
import java.util.Random;

public class JogoAdivinhacao {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int numeroAleatorio = new Random().nextInt(100);
        int tentativas = 0;
        boolean vencedor = false;
        int maxTentativas = 5; // Defina o número máximo de tentativas desejado

        while (tentativas < maxTentativas) {
            System.out.println("Digite um número entre 0 e 100");
            
            // Adiciona validação para garantir que o usuário insira apenas números
            if (scanner.hasNextInt()) {
                int chute = scanner.nextInt();
                tentativas++;

                if (numeroAleatorio == chute) {
                    System.out.println("Parabéns você acertou!!! em: " + tentativas + " tentativas!!!");
                    vencedor = true;
                    break;
                } else if (numeroAleatorio > chute) {
                    System.out.println("Não foi dessa vez! O número é maior do que o seu palpite!");
                } else {
                    System.out.println("Quase!!! O número é menor do que o seu palpite!");
                }
            } else {
                System.out.println("Por favor, insira um número válido.");
                scanner.next(); // Limpa o buffer do scanner
            }
        }

        if (!vencedor) {
            System.out.println("Você perdeu! O número era: " + numeroAleatorio);
        }
    }
}

Essas são apenas sugestões e ajustes que você pode considerar. O código básico que você forneceu já está funcionando bem para o propósito do jogo de adivinhação.

Muito bom! Observações que fazem muito sentido e com certeza vou aplicar isso para aperfeiçoar o código. Muito obrigado!