Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

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

Então percebi depois que deveriam ser apenas 5 tentativas, pois tentei fazer sem olhar muito, mas aí está uma versão do jogo de adivinhação:

import java.util.Random;
import java.lang.System;
import java.util.Scanner;

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

        // enquanto o palpite != de certo repitA
        // se acertou == true entao n repete e boto uma condicional em baixo com if
        boolean acerto = false;
        while (acerto == false) {

        Random aleatorio = new Random();
        int numero = aleatorio.nextInt(100);

        System.out.println("Dê um palpite de 0 a 100: ");
        Scanner sc = new Scanner(System.in);
        int palpite = sc.nextInt();

            if (palpite == numero) {
                System.out.println("Você acertou! /n Fim de Jogo!" );
                acerto = true;

                break;
            } else {
                System.out.println("Você errou!");
                System.out.println("A resposta é: " + numero + ".");
                System.out.println("Tente novamente!");
            }

        }
    }
}
3 respostas
solução!

Oi, Débora. Como vai?

Ótimo que você conseguiu montar sua própria versão do jogo sem olhar muito, isso ajuda bastante a fixar while, if e entrada de dados com Scanner. Um ponto importante é que o número sorteado está dentro do while, então ele muda a cada nova tentativa.

Se quiser, no futuro, você pode sortear o número antes do laço e controlar as 5 tentativas com um contador:

Random aleatorio = new Random();
int numero = aleatorio.nextInt(100);
Scanner sc = new Scanner(System.in);

for (int tentativa = 1; tentativa <= 5; tentativa++) {
    System.out.println("De um palpite de 0 a 100: ");
    int palpite = sc.nextInt();

    if (palpite == numero) {
        System.out.println("Voce acertou!");
        break;
    } else {
        System.out.println("Voce errou!");
    }
}

System.out.println("O numero era: " + numero);

Aqui sorteamos o número apenas uma vez e usa o for para limitar o jogo a 5 tentativas.

Você pretende manter o mesmo número secreto durante todas as tentativas?

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

Nossa, bm interessante. Eu fiz uma nova versão do código com base no enunciado dessa vez. Vou colocar logo abaixo...

VERSÃO 2.0 BASEADO NO ENUNCIADO:

Depois que eu vi seu código percebib que tem algo errado no meu, o aleatório mudav a cada palpite, então coloquei ele fora do while, porém, quando o jogador decide jogar novamente, o número é o primeiro gerado, agr preciso pensar em uma solução para isso.

import java.util.Random;
import java.lang.System;
import java.util.Scanner;

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

        // O usuario deve tentar só até 5 vezes
        // tenho que fazer a contagem de tentativas
        // colocar "game over" se quiser reiniciar o o jogo digite start, algo assim;
        // colocar condicionais pra ver se foi ate 5 vezes (for)
        // também comparar se o palpite é maior ou menor q o n aleatório e dizer
        // se acertar "you win" quer jogar novamente? e pedir o start tmb
        
        int tentativas = 0;
        boolean acerto = false;

        Random aleatorio = new Random();
        int numero = aleatorio.nextInt(100);

        while (tentativas < 5 && acerto == false)  {

            System.out.println("Dê um palpite de 0 a 100: ");
            Scanner sc = new Scanner(System.in);
            int palpite = sc.nextInt();

            if (numero != palpite ) {
                tentativas++;

                if (palpite > numero) {
                    System.out.println("O seu palpite é maior do que o número gerado!");
                } else if (palpite < numero) {
                    System.out.println("Seu palpite é menor que o número gerado!");
                }
            } else {
                acerto = true;
                System.out.println("You win!");
                while (true) {
                    System.out.println("Quer jogar novamente? (digite 1 para sim e 0 para não)!");
                    int resposta = sc.nextInt();
                    if (resposta == 1) {
                        acerto = false;
                        tentativas = 0;
                        break;
                    } else if (resposta == 0 ) {
                        break;
                    } else {
                        System.out.println("[ERRO[] Digite apenas 0 ou 1");
                    }


                }


            }

        }
        if (!acerto) {
            System.out.println("Game Over!!!");
        }



    }
}