Seu código está bem estruturado para um jogo de adivinhação básico, mas há algumas melhorias que podem ser feitas para torná-lo mais eficiente e claro. Vou sugerir algumas modificações:
Mensagem de Acerto dentro do Loop: Atualmente, a mensagem de acerto "Parabéns você acertou!" pode ser exibida múltiplas vezes se o usuário acertar o número antes da quinta tentativa, devido à sua posição no loop. Isso acontece porque, mesmo após acertar, o loop continua até completar as 5 tentativas.
Quebra do Loop após Acerto: Se o usuário acertar o número, o jogo deve idealmente terminar imediatamente, sem pedir mais entradas.
Estrutura dos Condicional: Para melhorar a clareza, você pode reestruturar o if
para verificar primeiro se o usuário acertou, e então, usar um else
para as dicas.
Vamos a uma versão revisada do seu código com essas melhorias:
import java.util.Random;
import java.util.Scanner;
public class Adivinhacao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numero = new Random().nextInt(10) + 1; // Gera um número entre 1 e 10
int chute = -1; // Inicializa chute com um valor fora do intervalo possível
int tentativas = 0;
System.out.println("Tente adivinhar o número que estou pensando, entre 1 e 10!");
while (tentativas < 5) {
System.out.println("Digite seu chute: ");
chute = sc.nextInt();
if (chute == numero) {
System.out.println("Parabéns, você acertou!");
break; // Sai do loop se o usuário acertar
} else if (chute > numero) {
System.out.println("O número é menor que o chute.");
} else {
System.out.println("O número é maior que o chute.");
}
tentativas++;
// Mensagem de derrota após todas as tentativas
if (tentativas == 5) {
System.out.println("Que pena, suas tentativas acabaram. O número era " + numero + ".");
}
}
}
}
Principais Mudanças:
- O jogo agora termina imediatamente se o usuário acertar, graças ao
break
. - A mensagem de acerto só será exibida uma vez.
- Adicionada uma mensagem ao final das tentativas para informar o usuário do número correto caso ele não acerte.
- O valor inicial de
chute
agora é -1
para garantir que ele não seja igual a numero
antes da primeira entrada do usuário. - O número gerado agora está entre 1 e 10, que é um pouco mais intuitivo para o usuário.
Essas mudanças tornam o código mais eficiente e a experiência do usuário mais fluida e compreensível.