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
- 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.
- Controle de Tentativas: A limitação de tentativas a 5 torna o jogo desafiador, mas ainda acessível, mantendo o usuário engajado.
- 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
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.
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.
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.
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.