Jogar é bom...mas jogar um jogo que você mesmo criou, é um prazer que poucos tem.

Com base nos conhecimentos obtidos em nosso curso online de Java, já é possível criarmos um jogo.
Embora bem simples, é bem engenhoso e legal:
O computador vai sortear um número, entre 1 e 1000 e você terá que adivinhar que número é esse.
A cada rodada você entra com um número e o computador vai te dar as dicas, dizendo se o número que você digitou é maior ou menor ao número que ele sorteou.
Termina quando você acerta, e ele guarda o número de tentativas que você fez. Consegue bater seu próprio record?
Sabe qual é a melhor estratégia?
PASSO 1: Computador gera um número entre 1 e 1000
Para gerar um número, necessitamos importar a classe Random:import java.util.Random;
Precisamos criar um objeto do tipo Random para que ele possa gerar os números, vamos chamar de 'geradorDeAleatorios':
Random geradorDeAleatorios = new Random();
Agora precisamos que esse gerador nos forneça um número aleatório no intervalo de 1000 números. Vamos armazenas esse valor na variável inteira 'sorteado':
sorteado = geradorDeAleatorios.nextInt(1000);
Porém, dessa maneira, ele vai gerar um número entre 0 e 999. Para ser entre 1 e 1000, somamos 1:
sorteado = geradorDeAleatorios.nextInt(1000) + 1;
PASSO 2: looping principal do programa
Número gerado!Agora o usuário vai dar os palpites. Como o usuário vai tentar adivinhar o número pelo menos uma vez, o looping precisa rodar pelo menos uma vez. Portanto, usamos o do ... while.
Esse laço ocorre enquanto não adivinharmos o número, ou seja, enquanto nosso palpite for diferente do número sorteado:
do{
// laço
}while( palpite != sorteado);
PASSO 3: tentativa incrementada
A cada tentativa que damos, a variável 'tentativas', que contabiliza nossas tentativas é incrementada em uma unidade:tentativas++;
PASSO 4: analisando o palpite
Vamos mandar 3 números para o método dica(): o nosso palpite, o número sorteado pelo computador e o número de tentativas que fizemos.Para o nosso jogo dar a dica certa, usaremos os testes condicionais if else.
O método testa se o nosso palpite foi maior que o número gerado pelo computador, se for, dá tal dica:
if(palpite > numero){
System.out.println("Seu palpite é maior que o número sorteado.");
Case não seja, o palpite será menor ou igual ao número sorteado. Então vai pro else.
Caso o palpite do usuário seja menor que o número sorteado pelo computador, tal dica é exibida:
if(palpite < numero){
System.out.println("Seu palpite é menor que o número sorteado.");
Por fim, se o palpite não for maior nem menor que o número sorteado é porque é igual.
Ora, se é igual, você acertou e é exibida a mensagem de acerto e o número de tentativas realizadas:
System.out.println("Parabéns, você acertou! O número era " + numero);
System.out.println("Você tentou " + tentativas + " vezes antes de acertar!");
Quando você acerta, o método dica não é mais chamado, pois 'palpite != sorteado' retornará um valor falso, já que estes números serão iguais (palpite = sorteado), então o laço acaba, acabando o nosso jogo em Java.
Nosso jogo/aplicativo Java ficará assim:
import java.util.Random;
import java.util.Scanner;
public class JogoAdivinhaNumero {
public static void dica(int palpite, int numero, int tentativas){
if(palpite > numero){
System.out.println("Seu palpite é maior que o número sorteado.");
} else {
if(palpite < numero){
System.out.println("Seu palpite é menor que o número sorteado.");
} else {
System.out.println("Parabéns, você acertou! O número era " + numero);
System.out.println("Você tentou " + tentativas + " vezes antes de acertar!");
}
}
}
public static void main(String[] args) {
int palpite=0,
sorteado,
tentativas=0;
Scanner entrada = new Scanner(System.in);
Random geradorDeAleatorios = new Random();
sorteado = geradorDeAleatorios.nextInt(1000) + 1;
System.out.println("Número entre 1 e 1000 sorteado!");
do{
System.out.printf("\n\n\n\n-----------------\n");
System.out.println("Número de tentativas: " + tentativas);
System.out.print("Qual seu palpite: ");
palpite = entrada.nextInt();
tentativas++;
dica(palpite,sorteado, tentativas);
}while (palpite != sorteado);
}
}