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

17/02/2012

0

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

Responder

Posts

05/03/2012

Lucas Iorio

[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?"));
Responder

05/03/2012

Douglas Eric

[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!
Responder

05/03/2012

Lucas Iorio

Tentativas é o chute e o chute são as tentativas?
Responder

05/03/2012

Lucas Iorio

[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.
Responder

05/03/2012

Mathews Motta

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.
Responder

05/03/2012

Lucas Iorio

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.
Responder

05/03/2012

Lucas Iorio

=] uaheuahe Copiei o seu codigo sek
Responder

05/03/2012

Lucas Iorio

[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.
Responder

05/03/2012

Douglas Eric

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

05/03/2012

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!");
		}

	}
}
Responder

05/03/2012

Lucas Iorio

[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.
Responder

06/03/2012

Douglas Eric

[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.
Responder

06/03/2012

Lucas Iorio

[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.
Responder

06/03/2012

Lucas Iorio

[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.
Responder

06/03/2012

Lucas Iorio

[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%)
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar