2
respostas

Resolução: Jogo de Adivinhação

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

public class JogoAdivinhacao {
    public static final int CHANCES = 5; //Quantidade de chances.
    public static void main(String[] args) {
        int numeroAleatorio = new Random().nextInt(100);
        Scanner input = new Scanner(System.in);

        //Isso aqui é firula, só pra enfeitar xD
        System.out.println("---------------------------------------------------------");
        System.out.println("||-----------------Jogo da Adivinhação-----------------||");
        System.out.println("||Vou pensar em um número e quero ver você adivinhar!!!||");
        System.out.printf("||------------------Você tem %d chances-----------------||\n", CHANCES);
        System.out.println("---------------------------------------------------------\n");
        System.out.println(numeroAleatorio);

        int contador = 0;
        for (int i = 0; i < CHANCES; i++) {
            System.out.print("Digite um número de 0 a 100: ");
            int tentativa = input.nextInt();
            //Math.abs() retorna o valor absoluto da expressão. Ou seja, sempre retorna um valor positivo.
            int diferenca = Math.abs(numeroAleatorio - tentativa);

            if (diferenca >= 50) {
                System.out.println("Nossa... Essa foi longe! XD");
            } else if (diferenca <= 20 && numeroAleatorio != tentativa) {
                System.out.println("Tá chegando perto hein...");
            } else if (tentativa < numeroAleatorio) {
                System.out.println("Você digitou um número menor do que eu pensei.");
            } else if (tentativa > numeroAleatorio) {
                System.out.println("Você digitou um número maior do que eu pensei.");
            } else {
                System.out.println("\nVocê conseguiu! O número que você digitou foi o correto!");
                System.out.printf("Número de tentativas: %d\n", i + 1);
                break;
            }
            contador++;
        }

        //condição de derrota. Só vai ser executado quando esgotar as tentativas.
        if (contador > 4) {
            System.out.println("\nQue pena! Parece que você não conseguiu acertar o número!");
            System.out.printf("O número era %d!\n", numeroAleatorio);
            System.out.println("Tente de novo!");
        }
    }
}

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#abs(int)

2 respostas

Olá, Leonardo! Parece que você fez um ótimo trabalho ao criar o jogo de adivinhação. Seu código está bem estruturado e fácil de entender. No entanto, percebo que você não fez uma pergunta específica sobre o código, então vou supor que você está procurando uma análise geral.

O seu código segue bem a proposta do exercício. Você criou um número aleatório entre 0 e 100, e deu ao usuário 5 chances para adivinhar o número. Além disso, você fez um bom uso do loop for para controlar as tentativas e usou a instrução break para interromper o loop quando o usuário adivinha o número corretamente.

Uma sugestão que eu faria seria remover a linha System.out.println(numeroAleatorio);, pois ela revela o número aleatório que o programa está pensando, tornando o jogo mais fácil.

Outra sugestão seria melhorar a lógica das mensagens de feedback para o usuário. Atualmente, se a diferença entre o número aleatório e a tentativa do usuário for exatamente 50, a mensagem será "Nossa... Essa foi longe! XD", mas se for 49, a mensagem será "Você digitou um número menor do que eu pensei." ou "Você digitou um número maior do que eu pensei.". Talvez você possa ajustar os limites das condições para que as mensagens sejam mais consistentes.

Espero ter ajudado e bons estudos!

Verdade, coloquei a impressão do numeroAleatorio pra testar e acabei esquecendo de remover na hora de enviar a solução rsrs. Sobre o limite das condições, tem razão. Ficaria melhor ajustando ou até mesmo adicionando mais mensagens, pro jogo ficar mais interativo com o usuário. Muito obrigado pelo feedback!