[RESOLVIDO]Dúvida - Jogo de Adivinhação

4 respostas
B

Boa tarde a todos!!
Estou tentando fazer um exercício aparentemente básico.

"Desenvolva um programa em Java que simule um jogo de adivinhação. Primeiramente, o programa deverá pedir o nome do jogador, depois sortear um número entre 0 e 100. Após o sorteio, inicia-se o jogo e o jogador deverá tentar adivinhar o número sorteado.
A cada tentativa, o jogo deverá informar se o ?chute? do jogador foi maior ou menor do que o número a ser adivinhado. O jogo termina após vinte tentativas erradas ou quando o jogador acertar o número sorteado e, nesse caso, informe a quantidades de tentativas que foram necessárias. Após o término do jogo será mostrado o nome do jogador seguido da quantidade de tentativas, o jogador deverá decidir então se deseja ou não iniciar um novo jogo."

Até aonde fiz:

package JogoAdivinha;

import javax.swing.JOptionPane;

public class Jogo {


	public static void main(String[] args) {

		String nome ;
		int chutes = 1 ;
		int tentativas = 1;
		int randon = (int)(1+Math.random()*100);
		int botao;
		
		nome = JOptionPane.showInputDialog(null,"Olá,qual o seu nome?");
		tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));

		  
		for(int i = 0; i < 10; i++)
		
			while(tentativas != randon && chutes < 10) 

		{
				if  (tentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
				else 
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
				tentativas++;
				chutes++;
				tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Qual o número? "));
		}
		if (tentativas == randon){
			JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");	
			botao = JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?","Jogo da Adivinhação",JOptionPane.YES_NO_OPTION);
			if (botao == JOptionPane.YES_OPTION)
				return;
			else 
				System.exit(0);
		}
		
	else 
		botao = JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?","Jogo da Adivinhação",JOptionPane.YES_NO_OPTION);
		if (botao == JOptionPane.YES_OPTION)
			return;
		else 
			System.exit(0);
	}

}

MINHA DUVIDA: Ali aonde esta o "return" eu gostaria que ele voltasse ao inicio do programa,como posso fazer isso?Vou ter que criar outro método?

4 Respostas

TerraSkilll

Basicamente, você tem que colocar a lógica do jogo dentro de outro laço while mais externo, controlado por uma variável qualquer.

Exemplo:

import javax.swing.JOptionPane;

public class Jogo {


	public static void main(String[] args) {

		String nome ;
		int chutes = 1 ;
		int tentativas = 1;
		int randon = (int)(1+Math.random()*100);
		int botao;
		boolean continuar = true;
		nome = JOptionPane.showInputDialog(null,"Olá,qual o seu nome?");

		while (continuar){
		tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));

		  
		for(int i = 0; i < 10; i++)
		
			while(tentativas != randon && chutes < 10) 

		{
				if  (tentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
				else 
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
				tentativas++;
				chutes++;
				tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Qual o número? "));
		}
		if (tentativas == randon){
			JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");	
			botao = JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?","Jogo da Adivinhação",JOptionPane.YES_NO_OPTION);
			if (botao == JOptionPane.YES_OPTION)
				continuar = true;  // o usuário optou por continuar
			else 
				continuar = false;  // o usuário optou por sair
		}	
	else 
		botao = JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?","Jogo da Adivinhação",JOptionPane.YES_NO_OPTION);
		if (botao == JOptionPane.YES_OPTION)
			continuar = true; // o usuário optou por continuar
		else 
			continuar = true;  // o usuário optou por sair
        }
        System.exit(0);
	}

}

Abraço.

B

Aparentemente isso daria certo , pensei nesse modo ou fazendo outro método e chamar ele.

Não sei se chegou testar esse código, mais ao rodar, aparentemente está certo,mais se você colocar pra começar outro jogo,ele não muda o numero do sorteio,e não zera as tentativas.

Precisaria “zerar” as variaveis.Vou da uma pesquisada pra ver se acho algo sob isso.

TerraSkilll

Bimrock:
Aparentemente isso daria certo , pensei nesse modo ou fazendo outro método e chamar ele.

Não sei se chegou testar esse código, mais ao rodar, aparentemente está certo,mais se você colocar pra começar outro jogo,ele não muda o numero do sorteio,e não zera as tentativas.

Precisaria “zerar” as variaveis.Vou da uma pesquisada pra ver se acho algo sob isso.

Coloque o trecho que zera as tentativas dentro do while.

Abraço.

B
TerraSkilll:
Bimrock:
Aparentemente isso daria certo , pensei nesse modo ou fazendo outro método e chamar ele.

Não sei se chegou testar esse código, mais ao rodar, aparentemente está certo,mais se você colocar pra começar outro jogo,ele não muda o numero do sorteio,e não zera as tentativas.

Precisaria "zerar" as variaveis.Vou da uma pesquisada pra ver se acho algo sob isso.

Coloque o trecho que zera as tentativas dentro do while.

Abraço.

Obrigado pela ajuda.

O código completo e funcionando ficou assim:

package JogoAdivinha;  
  
import javax.swing.JOptionPane;  
  
public class jogo {  
  
  
   public static void main(String[] args) {  
  
      String nome ;  
      int chutes = 1 ;  
      int tentativas = 1;  
      int randon = (int)(1+Math.random()*100);  
      int botao;  
      boolean continua = true;  
         
      nome = JOptionPane.showInputDialog(null,"Olá,qual o seu nome?");
     
      while(continua){  
    	    
    	  chutes = 1 ;  
    	  tentativas = 1;  
    	  randon = (int)(1+Math.random()*100);
    	      
      tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));  
        
         while(tentativas != randon && chutes < 10)   
        
      {  
            if  (tentativas < randon)  
            JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");  
            else   
            JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");  
            tentativas++;  
            chutes++;  
            tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Qual o número? "));  
      }  
        
      if (tentativas == randon){  
         JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");     
         botao = JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?","Jogo Adivinhação",JOptionPane.YES_NO_OPTION);  
         if (botao == JOptionPane.YES_OPTION)  
            continua = true;  
           
         else   
            continua = false;  
            }  
   else   
      botao = JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?","Jogo Adivinhação",JOptionPane.YES_NO_OPTION);  
      if (botao == JOptionPane.YES_OPTION)  
         continua = true;  
      else   
      continua = false;  
      }  
      System.exit(0);  
   }  
  
 }
Criado 5 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 4
Participantes 2