1
resposta

[Projeto] Faça como eu fiz: jogo de adivinhação

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

public class Jogo {
public static void main(String[] args) {
// Importação das bibliotecas
Scanner leitor = new Scanner(System.in);
Scanner leitor2 = new Scanner(System.in);

    // Declaração de variáveis
    int aleatorio = new Random().nextInt(20);
    int tentativas_facil = 15;
    int tentativas_medio = 10;
    int tentativas_dificil = 5;


    // Definir while true
    boolean repetir = true;

    // Declaração de loop

    while (repetir) {

        System.out.println("--------------------------------");
        System.out.println("-------JOGO DE ADIVINHAÇÃO------");
        System.out.println("--------------------------------");
        System.out.println("1 - Nível Fácil");
        System.out.println("2 - Nível Médio");
        System.out.println("3 - Nível Difícil");

        System.out.println("Escolha a sua opção de nível:");
        int valor0 = leitor.nextInt();

        if (valor0 == 1) {

            while (tentativas_facil > 0) {

                System.out.println("Digite um número:");
                int valor1 = leitor.nextInt();

                if (valor1 == aleatorio) {
                    System.out.println("Parabéns! Você acertou!");
                    System.out.println("Você acertou em " + tentativas_facil + " tentativas!");
                    repetir = false;
                    break;
                } else if (valor1 < aleatorio) {
                    System.out.println("Muito baixo! Digite um número maior!");
                } else {
                    System.out.println("Muito alto! Digite um número menor!");
                }

                tentativas_facil--;

                System.out.println("Tentativas restantes: " + tentativas_facil);


            }
            if (tentativas_facil == 0) {
                System.out.println("Você perdeu suas tentativas!");
                repetir = false;
                break;
            }
        }

        if (valor0 == 2) {
            while (tentativas_medio > 0) {

                System.out.println("Digite um número:");
                int valor1 = leitor.nextInt();

                if (valor1 == aleatorio) {
                    System.out.println("Parabéns! Você acertou!");
                    System.out.println("Você acertou em " + tentativas_medio + " tentativas!");
                    repetir = false;
                    break;
                } else if (valor1 < aleatorio) {
                    System.out.println("Muito baixo! Digite um número maior!");
                } else {
                    System.out.println("Muito alto! Digite um número menor!");
                }

                tentativas_medio--;

                System.out.println("Tentativas restantes: " + tentativas_medio);
            }
            if (tentativas_medio == 0) {
                System.out.println("Você perdeu suas tentativas!");
                repetir = false;
                break;
            }
            if (valor0 == 3) {
                while (tentativas_dificil > 0) {

                    System.out.println("Digite um número:");
                    int valor1 = leitor.nextInt();

                    if (valor1 == aleatorio) {
                        System.out.println("Parabéns! Você acertou!");
                        System.out.println("Você acertou em " + tentativas_dificil + " tentativas!");
                        repetir = false;
                        break;
                    } else if (valor1 < aleatorio) {
                        System.out.println("Muito baixo! Digite um número maior!");
                    } else {
                        System.out.println("Muito alto! Digite um número menor!");
                    }

                    tentativas_dificil--;

                    System.out.println("Tentativas restantes: " + tentativas_dificil);
                }
                if (tentativas_dificil == 0) {
                    System.out.println("Você perdeu suas tentativas!");
                    repetir = false;
                    break;
                }

            }
        }
    }
    leitor.close();
}

}

1 resposta

Oi, Yago! Como vai?

Analisando o seu código, já dá para perceber que você compreendeu bem o uso do while para controlar as tentativas, além de ter estruturado corretamente a lógica com int, boolean repetir, Scanner e leitor.nextInt(). O uso de System.out.println para exibir as mensagens ao usuário, como "Digite um número" e a contagem de tentativas restantes, também está bem aplicado.

Existem dois pontos que merecem atenção. O primeiro é que o bloco do nível difícil ficou aninhado dentro do if (valor0 == 2), o que impede sua execução correta. Ele precisa estar no mesmo nível dos outros blocos, como um if. O segundo ponto é que você declarou dois objetos Scanner, o leitor e o leitor2, mas apenas um deles já é suficiente para leitura do teclado neste caso.

Uma dica valiosa para organizar menus de escolha é substituir os blocos if encadeados pelo switch, que deixa o código mais limpo e fácil de manter. Veja o exemplo abaixo:


int opcao = leitor.nextInt();

switch(opcao){
    case 1:
        System.out.println("Nivel facil");
        break;
    case 2:
        System.out.println("Nivel medio");
        break;
    case 3:
        System.out.println("Nivel dificil");
        break;
    default:
        System.out.println("Opcao invalida");
}

Nesse exemplo, o switch avalia a opção escolhida pelo jogador e executa o bloco correspondente, tornando a estrutura bem mais legível do que vários if e else encadeados. Essa é uma boa prática para projetos como esse jogo de adivinhação, em que o menu cresce com o tempo.

Você já pensou em adicionar uma opção para reiniciar o jogo após o jogador acertar ou perder todas as tentativas, sem precisar encerrar o programa?

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