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

[Projeto] [Solução] Jogo de Adivinhação

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

public class Main {
    public static void main(String[] args) {

        int numeroSecreto = new Random().nextInt(100);
        Scanner sc = new Scanner(System.in);
        int chute = 0;
        int tentativas = 0;

        System.out.println("Seja bem vindo(a) ao jogo do número secreto!");
        System.out.println("Você tem 5 tentativas para adivinhar qual é o número secreto :)");

        for (int i = 0; i < 5; i++) {

            System.out.println("Digite um número entre 0 e 100:");
            chute = sc.nextInt();

            tentativas++;

            if (chute == numeroSecreto) {
                System.out.println("Parabéns, você acertou o número secreto " + numeroSecreto + " com " + tentativas + " tentativas");
                break;
            }

            if (chute > numeroSecreto) {
                System.out.println("O número secreto é menor");
            } else {
                System.out.println("O número secreto é maior");
            }

        }
        if (tentativas == 5 && chute != numeroSecreto) {
            System.out.println("você não conseguiu acertar o número secreto " + numeroSecreto + ", após suas 5 tentativas");
        }
    }
}
2 respostas

Leandro, seu código do jogo de adivinhação em Java está bem estruturado e parece funcionar corretamente. Ele fornece uma maneira divertida e interativa para que os usuários tentem adivinhar um número secreto gerado aleatoriamente. Aqui estão alguns pontos sobre o seu código e algumas sugestões de melhorias:

Pontos Fortes

  1. Feedback Claro: Você forneceu feedback claro ao usuário sobre se o número escolhido é maior ou menor que o número secreto, o que é excelente para jogos de adivinhação.
  2. Controle de Tentativas: A limitação de tentativas a 5 torna o jogo desafiador, mas ainda acessível, mantendo o usuário engajado.
  3. Uso de Random: A geração do número secreto usando Random().nextInt(100) é uma boa escolha para este tipo de jogo, pois cria uma experiência nova a cada partida.

Sugestões de Melhorias

  1. Validação de Entrada: Seria útil adicionar validação para garantir que as entradas do usuário estejam dentro do intervalo esperado (0 a 100). Isso evita erros de runtime se o usuário entrar com dados inválidos.

  2. Melhorar a Interface do Usuário: Para tornar o jogo ainda mais interativo, você poderia adicionar mais interações, como perguntar ao usuário se ele deseja jogar novamente após o término das tentativas.

  3. Encapsulamento em Métodos: Para melhorar a organização e a reutilização do código, você poderia encapsular a lógica do jogo em métodos separados. Por exemplo, um método para processar as tentativas e outro para verificar se o número é maior ou menor.

  4. Tratamento de Exceções: Adicionar tratamento de exceções para capturar erros de entrada que possam ocorrer com nextInt().

Exemplo de Validação de Entrada e Tratamento de Exceções

Aqui está um exemplo de como você poderia implementar a validação de entrada e o tratamento de exceções:

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

public class Main {
    public static void main(String[] args) {

        int numeroSecreto = new Random().nextInt(100) + 1;  // de 1 a 100
        Scanner sc = new Scanner(System.in);
        int chute = 0;
        int tentativas = 0;

        System.out.println("Seja bem vindo(a) ao jogo do número secreto!");
        System.out.println("Você tem 5 tentativas para adivinhar qual é o número secreto :)");

        while (tentativas < 5) {
            System.out.println("Digite um número entre 1 e 100:");
            try {
                chute = sc.nextInt();
                if (chute < 1 || chute > 100) {
                    System.out.println("Por favor, insira um número entre 1 e 100.");
                    continue;
                }
                tentativas++;

                if (chute == numeroSecreto) {
                    System.out.println("Parabéns, você acertou o número secreto " + numeroSecreto + " com " + tentativas + " tentativas");
                    break;
                }

                if (chute > numeroSecreto) {
                    System.out.println("O número secreto é menor");
                } else {
                    System.out.println("O número secreto é maior");
                }

            } catch (InputMismatchException e) {
                System.out.println("Por favor, insira um número válido.");
                sc.next();  // limpa o buffer do scanner
            }
        }

        if (tentativas == 5 && chute != numeroSecreto) {
            System.out.println("Você não conseguiu acertar o número secreto " + numeroSecreto + ", após suas 5 tentativas.");
        }

        sc.close();
    }
}

Essas melhorias ajudarão a tornar o jogo mais robusto e a experiência do usuário mais amigável e interativa.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Olá Rafael, muito obrigado pelas sugestões/ apontamentos. Esse é meu primeiro curso na área, então, sugestões como as suas, são de grande valia para que eu possa evoluir meu conhecimento. Grato pelas dicas.