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

Exercício - Jogo de Adivinhação

Olá, pessoal! Gostaria de compartilhar meu código do Jogo de Adivinhação pedido na aula 3. Aceito sugestões de melhoria no código.

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

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) {
        int chute;
        int numero_gerado;

        Scanner dado_usuario = new Scanner(System.in);
        numero_gerado = new Random().nextInt(100);

        for (int i = 1; i <= 5; i++) {
            System.out.println("Tentativa: " + i);
            System.out.printf("Digite um número de 1 a 100: ");
            chute = dado_usuario.nextInt();

            if(chute < 1 || chute > 100){
                System.out.println("Por favor informe um número de 1 a 100");
            } else{
                if(chute > numero_gerado){
                    System.out.println("O número secreto é menor que seu palpite");
                } else if (chute < numero_gerado) {
                    System.out.println("O número secreto é maior que seu palpite");
                } else {
                    System.out.println("Você acertou");
                    break;
                }
            }

            if(i == 5){
                System.out.println("Você não conseguiu adivinhar o número secreto " + numero_gerado);
            }
        }
    }
}
2 respostas
solução!

Olá!

Parabéns por compartilhar seu código do Jogo de Adivinhação! É ótimo ver que você está praticando e buscando melhorias.

Analisando seu código, percebi que você implementou corretamente a lógica do jogo. No entanto, tenho algumas sugestões para deixar o código mais legível e organizado:

  1. Utilize nomes de variáveis mais descritivos: Ao invés de "chute", você pode utilizar "numeroChute" para deixar mais claro o propósito da variável.

  2. Adicione comentários explicativos: Comentários podem ajudar a entender melhor o que cada parte do código faz. Por exemplo, você pode adicionar um comentário explicando a função do loop "for".

  3. Separe o código em funções: Para tornar o código mais modular e reutilizável, você pode criar funções para as diferentes partes do jogo, como a função para gerar o número aleatório, a função para validar o chute do usuário, etc.

  4. Trate exceções: Se o usuário digitar algo que não seja um número, o programa irá quebrar. Você pode adicionar um tratamento de exceção para evitar isso.

Aqui está um exemplo de como o código pode ficar após as melhorias sugeridas:

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

public class Main {
    public static void main(String[] args) {
        int numeroChute;
        int numeroGerado;

        Scanner dadoUsuario = new Scanner(System.in);
        numeroGerado = gerarNumeroAleatorio();

        for (int i = 1; i <= 5; i++) {
            System.out.println("Tentativa: " + i);
            System.out.printf("Digite um número de 1 a 100: ");
            numeroChute = validarChute(dadoUsuario);

            if (numeroChute > numeroGerado) {
                System.out.println("O número secreto é menor que seu palpite");
            } else if (numeroChute < numeroGerado) {
                System.out.println("O número secreto é maior que seu palpite");
            } else {
                System.out.println("Você acertou");
                break;
            }

            if (i == 5) {
                System.out.println("Você não conseguiu adivinhar o número secreto " + numeroGerado);
            }
        }
    }

    public static int gerarNumeroAleatorio() {
        return new Random().nextInt(100);
    }

    public static int validarChute(Scanner dadoUsuario) {
        int chute;

        try {
            chute = dadoUsuario.nextInt();
            if (chute < 1 || chute > 100) {
                System.out.println("Por favor informe um número de 1 a 100");
                return validarChute(dadoUsuario);
            }
        } catch (Exception e) {
            System.out.println("Por favor informe um número válido");
            dadoUsuario.next(); // Limpa o buffer do Scanner
            return validarChute(dadoUsuario);
        }

        return chute;
    }
}

Espero que essas sugestões sejam úteis para você aprimorar seu código. Continue praticando e não hesite em compartilhar suas dúvidas e progresso aqui no fórum. Estamos aqui para te ajudar!

Espero ter ajudado e bons estudos!

Muito obrigado pelas contribuições, serão muito úteis para o refinamento do meu código.