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

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:

[code]
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);
}

}[/code]

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?

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.

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.

[quote=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.[/quote]

Coloque o trecho que zera as tentativas dentro do while.

Abraço.

[quote=TerraSkilll][quote=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.[/quote]

Coloque o trecho que zera as tentativas dentro do while.

Abraço.[/quote]

Obrigado pela ajuda.

O código completo e funcionando ficou assim:

[code]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);
}

} [/code]