[RESOLVIDO]Dúvida - Famoso exercicio de adivinhação

Java

17/02/2012

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." Estou com dúvida de como fazer para ele mostrar no final em qual tentativa o usuário acertou. Vou postar meu código até agora do que fiz.
 package JogoAdivinha;

import javax.swing.JOptionPane;

public class Jogo {

	
	public static void main(String[] args) {

		String nome ;
		int numTentativas ;
		int randon = (int)(1+Math.random()*100);
		int[] jogadas = new int[20];
		
		nome = JOptionPane.showInputDialog(null,"Olá,qual o seu nome?");
		JOptionPane.showMessageDialog(null,"Agora estou pensando em um número...Pronto!Tente adivinhar!");
		numTentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Qual número você acha que é?"));

		
		for(int i = 0; i < 21; i++)
		
			while(numTentativas != randon && numTentativas < 21)
			
		{
				numTentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Tente de novo "+nome+ "."));
				if  (numTentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
			else if  (numTentativas > randon)
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
		}

		if (numTentativas == randon)
				JOptionPane.showMessageDialog(null,"PARABÉNS "+nome+" !!");
				JOptionPane.showMessageDialog(null,"Você acertou na " +jogadas);
		else (numTentativas < 21)
				JOptionPane.showMessageDialog(null,"Fim de jogo,acabaram as tentativas.");
		 		

	}

}
Lembrando que sou iniciante,as vezes a lógica não pode estar perfeita, ou nem perto disso...rsrs[/code]
Kleber Bogo

Kleber Bogo

Curtidas 0

Respostas

Mathews Motta

Mathews Motta

17/02/2012

Ué? Faz um contador... Cada vez que ele tentar, conta +1 quando ele acertar exibe o numero de tentativas!
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"]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." Estou com dúvida de como fazer para ele mostrar no final em qual tentativa o usuário acertou. Vou postar meu código até agora do que fiz.
 package JogoAdivinha;

import javax.swing.JOptionPane;

public class Jogo {

	
	public static void main(String[] args) {

		String nome ;
		int numTentativas ;
		int randon = (int)(1+Math.random()*100);
		int[] jogadas = new int[20];
		
		nome = JOptionPane.showInputDialog(null,"Olá,qual o seu nome?");
		JOptionPane.showMessageDialog(null,"Agora estou pensando em um número...Pronto!Tente adivinhar!");
		numTentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Qual número você acha que é?"));

		
		for(int i = 0; i < 21; i++)
		
			while(numTentativas != randon && numTentativas < 21)
			
		{
				numTentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Tente de novo "+nome+ "."));
				if  (numTentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
			else if  (numTentativas > randon)
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
		}

		if (numTentativas == randon)
				JOptionPane.showMessageDialog(null,"PARABÉNS "+nome+" !!");
				JOptionPane.showMessageDialog(null,"Você acertou na " +jogadas);
		else (numTentativas < 21)
				JOptionPane.showMessageDialog(null,"Fim de jogo,acabaram as tentativas.");
		 		

	}

}
Lembrando que sou iniciante,as vezes a lógica não pode estar perfeita, ou nem perto disso...rsrs[/code]
Você está comparando o número (random) com o número de tentativas (numTentativas). Quer dizer que se "Random" for um (1) vai acertar de primeira, independente do chute? Dá uma revisada nisso. Só uma dica, você deve comparar se o número é igual do mesmo jeito que verifica se ele é maior ou menor! Você pode ter quantas estruturas de "if" você quiser, assim:
int num = <código de obter número>
if(num > 10){
    <Ação caso seja maior que 10>
} else if(num < 10){
    <Ação caso seja menor que 10>
} else {
    <Ação caso seja IGUAL a 10> //Já que ele não é NEM maior e NEM menor, então é igual.
}
Você poderia colocar a condição ali (else if (num == 10)), mas não era realmente necessário. Tenta aí.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

Para mostrar as tentativas, faz como o Mathews disse, com um contador:
int numTentativas = 0; //Começa com 0 tentativas.
int chute = <RECEBE VALOR> //RECEBE O VALOR DO CHUTE AQUI E NÃO NO NÚMERO DE TENTATIVAS
while(chute != randon && numTentativas < 21) {
    //...
    numTentativas++; //Isso aqui é igual a numTentativas = numTentativas + 1;
}
Assim você tem as tentativas e qual foi o "chute" que o usuário deu.
GOSTEI 0
Mathews Motta

Mathews Motta

17/02/2012

bimrock Não traduza memes. Nunca traduza memes!!! memes perdem sua fodacidade quando são traduzidos!
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="MathewsMotta"]bimrock Não traduza memes. Nunca traduza memes!!! memes perdem sua fodacidade quando são traduzidos!
Indeed! Fica MUITO ridículo alguém mandar um meme com "Desafio Aceito" ou "Isso aí" (no lugar do "Fuck yeah"). O único que achei legal foi o "LoL QUE", mas em Mexicano! xDDDDDDD
GOSTEI 0
Mathews Motta

Mathews Motta

17/02/2012

Cara, isso ta mais para "exercício de chute" do que de adivinhação. 20 tentativas de acertar um numero entre 100. Nao é questão de adivinhação, mas de probabilidade. Nao importa oq vc tentar adivinhar, se vc jogar 12903610231 vezes o jogo vc só vai conseguir acertar o numero 1/5 das vezes jogadas. Simples assim. E, pelo amor de deus, faça testes com sort de 1 a 10 e com 2 tentativas. As chances são as mesmas e a unica coisa q vai mudar eh seu tempo que não vai ser perdido à toa.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

O que tem a ve a imagem do perfil ? Coloquei como poderia colocar qualquer coisa..rsrs Isso de memes não vem ao caso, é somente uma imagem qualquer. Cheguei agora do trabalho, vou da uma olhada e acrescentar algo aqui e posto novamente depois.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"]O que tem a ve a imagem do perfil ? Coloquei como poderia colocar qualquer coisa..rsrs Isso de memes não vem ao caso, é somente uma imagem qualquer. Cheguei agora do trabalho, vou da uma olhada e acrescentar algo aqui e posto novamente depois.
Coloca um "Challenge Accepted" pelo menos... [img]http://1.bp.blogspot.com/-0gHg2T3fGVw/TvNIW3AcL6I/AAAAAAAAAVw/IUtxnrs9zpA/s320/challenge-accepted-meme.jpg[/img]
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"] Isso de memes não vem ao caso, é somente uma imagem qualquer.
Uma imagem qualquer???? IMAGEM QUALQUER????
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

Fiz algumas correções, e tive pontos positivos.Mais algumas coisas negativas. No código agora , após acertar o número,ele mostra a tela "tentar o numero maior " e em seguida a tela certa de acerto. Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio? Segue o código até agora.
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);
		
		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 < 20; i++)
		
			while(tentativas != randon && chutes < 20) 
			
		{
				tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Tente de novo "+nome+ "."));
				if  (tentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
				else 
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
				tentativas++;
				chutes++;
		}
		if (tentativas == randon){
			JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");	
			JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?");

		}
		
	else 
		JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?");
					
	}

}
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"] Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio?
Coloque o seu código dentro de um laço while, que vai continuar começando novos jogos até que o usuário [url=http://desciclopedia.ws/wiki/Capitão_Nascimento]peça pra sair[/url]
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

[quote="sekkuar"][quote="bimrock"] Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio?
Coloque o seu código dentro de um laço while, que vai continuar começando novos jogos até que o usuário [url=http://desciclopedia.ws/wiki/Capitão_Nascimento]peça pra sair[/url]
E sob ele mostrar a tela "tente um numero maior" ? Como disse eu acerto o número,ele mostra essa tela seguida da tela correta. Outra coisa, quando coloco o primeiro palpite, ele fala pra tentar de novo,e não diz se é maior ou menor,só diz do segundo palpite em diante.O que pode ser?
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"][quote="sekkuar"][quote="bimrock"] Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio?
Coloque o seu código dentro de um laço while, que vai continuar começando novos jogos até que o usuário [url=http://desciclopedia.ws/wiki/Capitão_Nascimento]peça pra sair[/url]
E sob ele mostrar a tela "tente um numero maior" ? Como disse eu acerto o número,ele mostra essa tela seguida da tela correta. Outra coisa, quando coloco o primeiro palpite, ele fala pra tentar de novo,e não diz se é maior ou menor,só diz do segundo palpite em diante.O que pode ser? Siga a lógica. Alguns ifs e elses estão fora do lugar. Vai seguindo linha por linha enquanto executa que você percebe onde está o erro.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="sekkuar"][quote="bimrock"][quote="sekkuar"][quote="bimrock"] Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio?
Coloque o seu código dentro de um laço while, que vai continuar começando novos jogos até que o usuário [url=http://desciclopedia.ws/wiki/Capitão_Nascimento]peça pra sair[/url]
E sob ele mostrar a tela "tente um numero maior" ? Como disse eu acerto o número,ele mostra essa tela seguida da tela correta. Outra coisa, quando coloco o primeiro palpite, ele fala pra tentar de novo,e não diz se é maior ou menor,só diz do segundo palpite em diante.O que pode ser? Siga a lógica. Alguns ifs e elses estão fora do lugar. Vai seguindo linha por linha enquanto executa que você percebe onde está o erro. Agora está certo.
	{
				
				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? "+nome+ "."));
		}
Vou agora tentar fazer a parte final do código , vou pensar aqui pra ver se entendo essa lógica do laço que sugeriu.Estou vendo aonde ficaria ele.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

Uma sugestão. Porque, enquanto vc ainda está testando, você não faz o sort em vez de 1 a 100, de 1 a 10? Vc pode deixar o numero de tentativas 10 também. Assim, você não precisaria de fato adivinhar o numero, e pode fazer os testes de forma mais rápida.
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

[quote="MathewsMotta"]Uma sugestão. Porque, enquanto vc ainda está testando, você não faz o sort em vez de 1 a 100, de 1 a 10? Vc pode deixar o numero de tentativas 10 também. Assim, você não precisaria de fato adivinhar o numero, e pode fazer os testes de forma mais rápida.
Na hora de testar eu coloco 5 pra ir mais rapido..rsrs Posso estar fazendo bobeira aqui , mais to tentando fazer sem usar esse while. Não sei se vão entender o que quero mais vou mostrar aqui.
		}
		if (tentativas == randon){
			JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");	
			botao = JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?");
			if (botao == JOptionPane.YES_OPTION)
				return;
			else 
				System.exit(0);
		}
		
	else 
		botao = JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?");
		if (botao == JOptionPane.YES_OPTION)
			return;
		else 
			System.exit(0);
	}

}
Ali aonde está o return eu queria colocar pra voltar o inicio do jogo.Tentei algumas coisas mais não deu certo.Tem como fazer isso desse jeito?
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

Inicie o jogo através de um método. Daí, se quiser iniciar mais um jogo, chame o método.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="bimrock"]Fiz algumas correções, e tive pontos positivos.Mais algumas coisas negativas. No código agora , após acertar o número,ele mostra a tela "tentar o numero maior " e em seguida a tela certa de acerto. Introduzi o confirmDialog do JOptionPane.Preciso atribuir ações para o botão que ele selecionar,isto eu sei, mais vou te que da um return pra voltar ao inicio do jogo caso ele queira jogar novamente,vou precisar então criar um método inicio? Segue o código até agora.
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);
		
		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 < 20; i++)
		
			while(tentativas != randon && chutes < 20) 
			
		{
				tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Tente de novo "+nome+ "."));
				if  (tentativas < randon)
				JOptionPane.showMessageDialog(null,"Tente um numero maior " +nome+".");
				else 
				JOptionPane.showMessageDialog(null,"Tente um numero menor " +nome+".");
				tentativas++;
				chutes++;
		}
		if (tentativas == randon){
			JOptionPane.showMessageDialog(null,"Parabéns "+nome+" você acertou na " +chutes+ " tentativa(s)");	
			JOptionPane.showConfirmDialog(null,"Gostaria de jogar novamente?");

		}
		
	else 
		JOptionPane.showConfirmDialog(null,"Acabaram suas chances!Quer Jogar de novo?");
					
	}

}
Esta sobrando um for(int i = 0; i < 20; i++)
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Fazendo como o Sekkuar sugeriu pelo While 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){
		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);
	}

 }
	
PROBLEMA: se eu coloco pra jogar novamente,ele não sorteia outro numero,e continua contando as alternativas da onde parou.Ou seja se errei 8 vezes antes de acertar o jogo passado,e começo um novo jogo , ao errar ele conta como 9 erros.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="bimrock"]Fazendo como o Sekkuar sugeriu pelo While 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){
		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);
	}

 }
	
PROBLEMA: se eu coloco pra jogar novamente,ele não sorteia outro numero,e continua contando as alternativas da onde parou.Ou seja se errei 8 vezes antes de acertar o jogo passado,e começo um novo jogo , ao errar ele conta como 9 erros.
Muito óbvio isso, não? Ao começar um novo jogo, você precisa reiniciar as variáveis. Pretty basic.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Quando é feito uma nova tentativa, voce tem que rodar essas linhas, novamente.
  chutes = 1 ;  
  tentativas = 1;  
  randon = (int)(1+Math.random()*100); 
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]Quando é feito uma nova tentativa, voce tem que rodar essas linhas, novamente.
  chutes = 1 ;  
  tentativas = 1;  
  randon = (int)(1+Math.random()*100); 
[b]You lose![/b]
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="bimrock"]Fazendo como o Sekkuar sugeriu pelo While 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){
		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);
	}

 }
	
PROBLEMA: se eu coloco pra jogar novamente,ele não sorteia outro numero,e continua contando as alternativas da onde parou.Ou seja se errei 8 vezes antes de acertar o jogo passado,e começo um novo jogo , ao errar ele conta como 9 erros.
Muito óbvio isso, não? Ao começar um novo jogo, você precisa reiniciar as variáveis. Pretty basic.
Correto, isso eu sabia.Só não sei como fazer pra zerar as variaveis.
GOSTEI 0
Kleber Bogo

Kleber Bogo

17/02/2012

[quote="bimrock"] Correto, isso eu sabia.Só não sei como fazer pra zerar as variaveis.
[quote="lucas iorio"]Quando é feito uma nova tentativa, voce tem que rodar essas linhas, novamente.
  chutes = 1 ;  
  tentativas = 1;  
  randon = (int)(1+Math.random()*100); 
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="Quote"]Correto, isso eu sabia.Só não sei como fazer pra zerar as variaveis.
Só uma obs. "Zerar as variáveis" não seria colocar ZERO em tudo e sim colocar os valores iniciais novamente.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]os valores iniciais que estavam no começo de seu programa.
Valores iniciais geralmente são os que estão no inicio do programa. :arrow:
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="sekkuar"][quote="lucas iorio"]os valores iniciais que estavam no começo de seu programa.
Valores iniciais geralmente são os que estão no inicio do programa. :arrow:
Indeed. Imaginei quais seriam os valores iniciais do meio ou do fim do programa... [img]http://javafree.uol.com.br/forum/images/smiles/icon_arrow.gif[/img]Confuso...
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Redundância a favor do aprendizado hehehehe =] se bem que já coloquei as linhas.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="Quote"]Só uma obs. "Zerar as variáveis" não seria colocar ZERO em tudo e sim colocar os valores iniciais que estavam no começo de seu programa.
Com certeza, quando me disse "Zerar as variáveis" era pra voltar no valor inicial dela.
	while(continua){
		tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));
		
		chutes = 1 ;
		tentativas = 1;
		randon = (int)(1+Math.random()*100);
			
		while(tentativas != randon && chutes < 10) 
Tentei fazer isso , achando que iria solucionar,apesar de não da erro, não funcionou.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="sekkuar"][quote="lucas iorio"]os valores iniciais que estavam no começo de seu programa.
Valores iniciais geralmente são os que estão no inicio do programa. :arrow:
Indeed. Imaginei quais seriam os valores iniciais do meio ou do fim do programa... [img]http://javafree.uol.com.br/forum/images/smiles/icon_arrow.gif[/img]Confuso... fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu Soltei um borboleta em alemão agora !!
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="bimrock"]
Só uma obs. "Zerar as variáveis" não seria colocar ZERO em tudo e sim colocar os valores iniciais que estavam no começo de seu programa.
Com certeza, quando me disse "Zerar as variáveis" era pra voltar no valor inicial dela.
	while(continua){
		tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));
		
		chutes = 1 ;
		tentativas = 1;
		randon = (int)(1+Math.random()*100);
			
		while(tentativas != randon && chutes < 10) 
Tentei fazer isso , achando que iria solucionar,apesar de não da erro, não funcionou.
Voce pode tentar colocar (ou tirar)
tentativas = 1;
Antes de
tentativas = Integer.parseInt(JOptionPane.showInputDialog(null,"Vamos começar,qual o número?"));
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

[quote="lucas iorio"][quote="ryuuji"][quote="sekkuar"][quote="lucas iorio"]os valores iniciais que estavam no começo de seu programa.
Valores iniciais geralmente são os que estão no inicio do programa. :arrow:
Indeed. Imaginei quais seriam os valores iniciais do meio ou do fim do programa... [img]http://javafree.uol.com.br/forum/images/smiles/icon_arrow.gif[/img]Confuso... fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu Soltei um borboleta em alemão agora !! SCHMETTERLING!
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Tentativas é o chute e o chute são as tentativas?
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]Tentativas é o chute e o chute são as tentativas?
Eu parei de tentar ajudar nesse tópico por isso. Com esses nomes de variáveis eu me confundi tanto que desisti de ajudar. Tentei postar, quando entendi que "tentativas" era o que o usuário digitou eu virei a mesa em que estava (quebrei uma caneca e meu mouse) e fui embora. Só voltei para comentários esparsos, como esse.
GOSTEI 0
Mathews Motta

Mathews Motta

17/02/2012

Sua mesa só tinha uma caneca e um mouse? @EDIT: Ah tá, vc virou a mesa com tudo, mas oq quebrou foi só a caneca e o mouse.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Quer saber? cansei desse tópico http://javafree.uol.com.br/topic-882090-Converter-de-Visualg-para-JAVA.html?page=1#199760 pronto. Agora coloca o seu JOptionPane nele e está pronto.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

=] uaheuahe Copiei o seu codigo sek
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]=] uaheuahe Copiei o seu codigo sek
Deixando o meu nome como autor e colocando um link para o post original, está otimo.
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

[quote="sekkuar"][quote="lucas iorio"]=] uaheuahe Copiei o seu codigo sek
Deixando o meu nome como autor e colocando um link para o post original, está otimo.
Obrigado a todos! Após chegar do trabalho , mudei a ordem aqui e está tudo certo.Segue o exercicio completo!
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);  
   }  
  
 }  
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Duvido ganhar no meu jogo sem "debugar" ou alterar o código !

package com.byiorio;

import java.util.Scanner;

public class DesafioGuess {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int numero = (int) (Math.random() * 100) + 1;

		System.out.println("Tente advinhar o numero entre 1 e 100:");
		int n = sc.nextInt();
		if (n == numero) {
			System.out.println("Parabens, acertou!");
		} else {
			System.out.println("Voce e ruim mesmo!");
		}

	}
}
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]Duvido ganhar no meu jogo sem "debugar" ou alterar o código !

package com.byiorio;

import java.util.Scanner;

public class DesafioGuess {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int numero = (int) (Math.random() * 100) + 1;

		System.out.println("Tente advinhar o numero entre 1 e 100:");
		int n = sc.nextInt();
		if (n == numero) {
			System.out.println("Parabens, acertou!");
		} else {
			System.out.println("Voce e ruim mesmo!");
		}

	}
}
tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

[quote="sekkuar"][quote="lucas iorio"]Duvido ganhar no meu jogo sem "debugar" ou alterar o código !

package com.byiorio;

import java.util.Scanner;

public class DesafioGuess {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int numero = (int) (Math.random() * 100) + 1;

		System.out.println("Tente advinhar o numero entre 1 e 100:");
		int n = sc.nextInt();
		if (n == numero) {
			System.out.println("Parabens, acertou!");
		} else {
			System.out.println("Voce e ruim mesmo!");
		}

	}
}
tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="sekkuar"][quote="lucas iorio"]Duvido ganhar no meu jogo sem "debugar" ou alterar o código !

package com.byiorio;

import java.util.Scanner;

public class DesafioGuess {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int numero = (int) (Math.random() * 100) + 1;

		System.out.println("Tente advinhar o numero entre 1 e 100:");
		int n = sc.nextInt();
		if (n == numero) {
			System.out.println("Parabens, acertou!");
		} else {
			System.out.println("Voce e ruim mesmo!");
		}

	}
}
tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma. não porque você vai estar usando o mesmo número. Se você colocar um número aleatório em cada vez que jogar, não vai acertar nunca. Mas se jogar sempre o mesmo, um hora você acerta.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="sekkuar"][quote="ryuuji"][quote="sekkuar"][quote="lucas iorio"]Duvido ganhar no meu jogo sem "debugar" ou alterar o código !

package com.byiorio;

import java.util.Scanner;

public class DesafioGuess {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int numero = (int) (Math.random() * 100) + 1;

		System.out.println("Tente advinhar o numero entre 1 e 100:");
		int n = sc.nextInt();
		if (n == numero) {
			System.out.println("Parabens, acertou!");
		} else {
			System.out.println("Voce e ruim mesmo!");
		}

	}
}
tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma. não porque você vai estar usando o mesmo número. Se você colocar um número aleatório em cada vez que jogar, não vai acertar nunca. Mas se jogar sempre o mesmo, um hora você acerta. [img]http://javafree.uol.com.br/files_user/files/0/19/01/udntsay.png[/img] Fica jogando na mega sena, toda vez e os mesmos números, que uma hora você acerta! Nesse código a chance de você acertar o número não muda, independente de qual for a sua entrada. Igual ou não, sua chance será 1% TODAS ([img]http://javafree.uol.com.br/files_user/files/2/20/C8/allthethings.png[/img]) as vezes.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="sekkuar"] [...] tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma.
WHAT THE F...???? A chance de acertar numa única jogada é a mesma, mas em 100 jogadas a chance de acertar pelo menos uma vez é maior, a chance de acertar em TODAS as vezes é muito inferior a 1%. (deveria até ser intuitivo....) [b][i]Estatística básica[/i][/b]: [b]Uma Jogada[/b] Número de resultados: 100 Possíveis acertos: 1 Probabilidade: 1/100 = 1% [b]Duas Jogadas, acertar TODAS[/b] Número de resultados: 100*100 = 10000 Possíveis acertos: 1 Probabilidade: 1/10000 = [b]0,01%[/b] [b]Duas Jogadas, acertar pelo menos UMA[/b] Número de resultados: 100*100 = 10000 Possíveis acertos (aqui é que complica):   - acertar ambos: 1   - acertar o primeiro, errar o segundo: 99   - errar o primeiro, acertar o segundo: 99   total: 199 Probabilidade: 199/10000 = [b]1,99%[/b] Para confirmar, vamos calcular a probabilidade de não acertar pelo menos um número; Possíveis não-acertos: 99*99 (99 números na primeira e 99 números na segunda) Probabilidade não-acertar: 9801/10000 = 98,01% portanto, para acertar será: 100% - 98,01% = 1,99% (confirma o resultado anterior) ... (a tecla mais usado do meu teclado?!) [b]100 Jogadas, acertar TODAS[/b] Número de resultados: 100^100 = 1.0E200 Possíveis acertos: 1 Probabilidade: 1/1.0E200 = [b]1.0E-198 %[/b] (MUITO MUITO POUCO) [b]100 Jogadas, acertar pelo menos UMA[/b] aqui o caminho direto fica meio complicado, vamos calcular a probabilidade inversa. Número de resultados: 100^100 = 1.0E200 Possíveis não-acertos: 99^100 = 3.66E199 Probabilidade de não acertar: 3.66E199/1.0E200 = 3666% Probabilidade de acertar pelo menos um: 100% - 36,6% = 63.4% (bem menos que 100%)
GOSTEI 0
Douglas Eric

Douglas Eric

17/02/2012

Acertei em 28 tentativas. [img]http://javafree.uol.com.br/files_user/files/8/2A/B9/guess.png[/img]
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="simu"][quote="ryuuji"][quote="sekkuar"] [...] tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma.
WHAT THE F...???? A chance de acertar numa única jogada é a mesma, mas em 100 jogadas a chance de acertar pelo menos uma vez é maior, a chance de acertar em TODAS as vezes é muito inferior a 1%. (deveria até ser intuitivo....) [...] Tem razão simu, mas eu me expressei mal. Não quis dizer que a chance dele acertar em TODAS as 100x era 1%, mas sim que A CADA NOVO JOGO a chance de ele acertar NAQUELE JOGO é 1%.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="sekkuar"]Acertei em 28 tentativas. [img]http://javafree.uol.com.br/files_user/files/8/2A/B9/guess.png[/img]
Fiz um código que acertou para mim na 210ª tentativa. Rodei de novo e acertei na 34ª. xD Supa easy.
sem ter que clicar em "executar" e depois digitar o número não conta.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="ryuuji"][quote="simu"][quote="ryuuji"][quote="sekkuar"] [...] tem 1% de chance. É mais fácil do que ganhar na loteria. Se você rodar o programa 100 vezes, colocando o mesmo número todas as vezes, é bem capaz de acertar.
A chance de acertar, em TODAS as 100 vezes continua 1% (You don't say!). Portanto, a chance de acertar rodando 100x continua a mesma.
WHAT THE F...???? A chance de acertar numa única jogada é a mesma, mas em 100 jogadas a chance de acertar pelo menos uma vez é maior, a chance de acertar em TODAS as vezes é muito inferior a 1%. (deveria até ser intuitivo....) [...] Tem razão simu, mas eu me expressei mal. Não quis dizer que a chance dele acertar em TODAS as 100x era 1%, mas sim que A CADA NOVO JOGO a chance de ele acertar NAQUELE JOGO é 1%. [img]http://javafree.uol.com.br/files_user/files/A/28/D1/rage-comics-rage-comics-you-must-not-have-been-a-statistics-major.png[/img]
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="sekkuar"][quote="ryuuji"][quote="sekkuar"]Acertei em 28 tentativas. [img]http://javafree.uol.com.br/files_user/files/8/2A/B9/guess.png[/img]
Fiz um código que acertou para mim na 210ª tentativa. Rodei de novo e acertei na 34ª. xD Supa easy.
sem ter que clicar em "executar" e depois digitar o número não conta. Mas eu cliquei em executar e digitei o número. UMA VEZ! XDDDDDDD
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="sekkuar"][quote="ryuuji"] [...]
http://javafree.uol.com.br/files_user/files/A/28/D1/rage-comics-rage-comics-you-must-not-have-been-a-statistics-major.png
Indeed. People simple can't stand against a critique.
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

Uma vez li em algum lugar sobre aquele jogo porta dos desesperados do GLU GLU YEAH YEAH 1) Tem a porta A, B e C: 2) Você escolheu a porta C 3) O apresentador pergunta se não quer a porta A, sabendo que não esta la 4) ele abre a porta A sai um monstro 5) tem a porta B e C e ele pergunta se vc quer mudar Esse artigo que li, diz que se você mudar para a porta B , tem mais chances de acertar que se continuar na porta C. Alguem conhece isso?
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="lucas iorio"]Uma vez li em algum lugar sobre aquele jogo porta dos desesperados do GLU GLU YEAH YEAH 1) Tem a porta A, B e C: 2) Você escolheu a porta C 3) O apresentador pergunta se não quer a porta A, sabendo que não esta la 4) ele abre a porta A sai um monstro 5) tem a porta B e C e ele pergunta se vc quer mudar Esse artigo que li, diz que se você mudar para a porta B , tem mais chances de acertar que se continuar na porta C. Alguem conhece isso?
isso é uma estratégia de marketing pra deixar o programa de TV mais tenso, que começou no UK
GOSTEI 0
Lucas Iorio

Lucas Iorio

17/02/2012

[quote="sekkuar"][quote="lucas iorio"]Uma vez li em algum lugar sobre aquele jogo porta dos desesperados do GLU GLU YEAH YEAH 1) Tem a porta A, B e C: 2) Você escolheu a porta C 3) O apresentador pergunta se não quer a porta A, sabendo que não esta la 4) ele abre a porta A sai um monstro 5) tem a porta B e C e ele pergunta se vc quer mudar Esse artigo que li, diz que se você mudar para a porta B , tem mais chances de acertar que se continuar na porta C. Alguem conhece isso?
isso é uma estratégia de marketing pra deixar o programa de TV mais tenso, que começou no UK
Acheiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii !!! Vou fazer o programinha em java =P http://pt.wikipedia.org/wiki/Problema_de_Monty_Hall
GOSTEI 0
POSTAR