1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java jogo do 31

Discussão em 'Programação' iniciada por DarkT, 6 de Novembro de 2008. (Respostas: 11; Visualizações: 3800)

  1. DarkT

    DarkT Power Member

    Bem pessoal e o jogo do 31 e simples ate mas estou com um problema a gerar "numeros random"

    Código:
    import java.util.Scanner;
    public class jogo
    {
    
        public static void main (String args[])
        {
            Scanner teclado=new Scanner(System.in);
            int j1=0,i=0;
            char op;
    
            int r1 = (int) (Math.random() * 9) + 1;   
            j1=j1+r1;
            System.out.println("Numero "+r1);
            System.out.println("O jogador 1 tem "+j1+" pontos.");
            System.out.println("Quer continuar? Clique '+' Para parar '=' ");
            op=teclado.next().charAt(0);
    
            while (i<5 && op != '=')
            {
                if (op=='+')
                {
                    r1 = (int) (Math.random() * 9) + 1; 
    
                    if((j1=j1+r1)<31)
                    {
                        j1=j1+r1;
                        System.out.println("Numero "+r1);
                        System.out.println("O jogador 1 tem "+j1+" pontos.");
                        i++;
                    }
                    else
                    {
                        System.out.println("O jogador 1 tem "+j1+" pontos devido a soma ser superior a 31.");                
                        i++;
                    }
                }
                    if (op != '+' && op!= '0')
                    
                        System.out.println("Opção Inválida ! Introduza '+' ou '=' .");
                    
                    
                System.out.println("Quer continuar? Clique '+' Para parar '=' ");
                op=teclado.next().charAt(0);
            }
            System.out.println("O jogador acabou a ronda 1 com "+j1);
        
        }
    
    }
    
    
    Quando gero o 1 nuemro tudo bem imaginem o 2 depois gera o 2º e gera o 5 dps devia somar 5+2 = 7 mas da 12 -.-
     
  2. Boas o teu problema é que estas a somar 2 vezes o segundo número gerado...

    tipo tens assim:

    Código:
     
           if((j1=j1+r1)<31)
                    {
                        j1=j1+r1;
    [...]
    
    Portanto tas a repetir a atribuição à variável "j1", se fazes a soma do novo número gerado dentro da condição if, não precisarás de fazer novamente a seguir como tens...

    cump's
     
  3. jogo do 31

    Bom dia, eu precisava de fazer algo assim, embora o meu seja um pouco diferente. No meu jogo, pode ir de 2 a 4 jogadores e a cada ronda todos os jogadores escolhem um numero de 1 a 3. Todas as escolhas sao somadas (total = escolhadojogador1+escolha do jogador2+...)

    O erro que me dá é que ele só lê os resultados ao fim de cada ronda.. ou seja, se o total está em 30, o jogador1 escolhe o numero 1 o que faz 31 mas ele continua a ir pelo jogador2 e é algo que nao consigo resolver..

    podem-me ajudar? thks :p



    Registei-me hoje !!:offtopic:
     
  4. docpt

    docpt Power Member

    Bem vindo!

    Eu acabei de fazer a dois dias esse programa para o primeiro trabalho pratico do Isel.

    Mostra o teu código!

    cumps
     
  5. não tenho aqui à mão.. estou com outro portatil, para dois jogadores foi mais ou menos assim..

    if(j==2){
    while(total<32){
    total3=0;
    total4=0;
    System.out.println("Jogador A: escolha um numero de 1 a 3:");
    escolha1=s.nextInt();
    total1=total1+escolha1;
    total=total1+total2+total3+total4;

    System.out.println("Jogador B: escolha um numero de 1 a 3:");
    escolha2=s.nextInt();
    total2=total2+escolha2;
    total=total1+total2+total3+total4;
    }

    o essencial é mais ou menos isto.. em relação a variaveis "j" é o numero de jogadores.. "total" é o valor total.. "total1" e "total2" sao as variaveis a adicionar ao total de cada jogador, escolha1 e escolha2 sao as escolhas dos jogadores, tentei mudar um pouco mas desta forma foi o que me aproximou mais do pretendido

    obrigado pela ajuda.
     
  6. Boas, sry estar fazer hijack a thread mas tambem tenho uma duvida em relaçao a este prog, eu tambem ando no isel e a diferença para o problema que o user acima escreveu, e que no meu o meu engenheiro nao especifica o numero de jogadores, e eu nao sei como fazer com que o prog reconheça o numero de jogadores. Do genero 1º jogo temos dois jogadores, ele reconheçe 2 jogadores, mas para outro jogo ja quero tipo 10 jogadores...etc...
    Espero que me possam ajudar.
    ^Cumps^
     
  7. docpt

    docpt Power Member

    Boas!

    Tens usar mais um while para os tais numeros infinitos de jogadores do tipo
    Que te seja do tipo "int aux=1;" e depois incrementada a medida que salta de jogador, quando o jogar o ultimo jogador volta ao jogador A ....

    Ate colocava o meu programa, mas nao o tenho, tem o meu colega que o teve a corrigir e por como o enunciado queria



    So uma coisa és que turma?
     
  8. Thx alot pela ajuda =D, isso ja deve ser o suficiente para fazer o resto do prog.
    Eu tou leetc turma lt11d
     
  9. tou a ver k isto anda tudo a cata do mesmo =X

    (lt11d here too ^^; )
     
  10. docpt

    docpt Power Member

    Ainda nao conseguiram?

    LI11D
     
  11. por acaso tambem ando de volta desse problema e nao consigo resolve-lo. ja me esta a dar uma grande dor de cabeça.

    Isel - LI11D
     
  12. docpt

    docpt Power Member

    Cá esta ele....


    Código:
    
    import java.util.Scanner;
    public class jogo31 {
    
    public static void main( String[] args ) {
    Scanner in = new Scanner(System.in);
    
    
      int n,j,z=1,i=0;
     
    
      System.out.print("Quantos jogadores: ");
      j=in.nextInt();
      System.out.println();
    	
      
        
    	
    	
     while(i<31){
    	
      
    	while(z<=j){	
    		
    		
    		
    		System.out.print("Total: "+i);				
    		System.out.print( " Jogador " + (char)('A'+z-1) + ": ");
    		
    		
    		n=in.nextInt();
    		
    		if (n==1 || n== 3 || n==2){
    		i=i+n;
    			if (i!=31){
    				z++;
    			}
    		if(z==(j+1)){
    		z=1;
    		}
    		
    		}	
    		
    		else{					
    				
    					
    		System.out.println("Jogada invalida");
    		i=33;
    		z=(j+1);
    		}
    			
    		
    		
    			
    			
    			
    			
    			
    			
      if (i==31){
    	  
    	  System.out.println("Total: "+i);	
    	  System.out.println();
      System.out.println("Jogador " + (char)('A'+z-1)+" venceu o jogo" );
      break;
      }
      if (i>31){
    	  System.out.println("Excedeste");
    	  break;
    	  }
     
    	}
    	}
    	}
    				
    		
    	
    	
    
    
    }
    
     
    Última edição: 20 de Outubro de 2009

Partilhar esta Página