O jogador perde a vez

1 resposta
P

olá!!.. Este jogo tá impcavel… Obrigado pela ajudinha… mas tenho uma duvida… eu não keria k o jogador perdesse a vez kuando jogasse mais moedas do k devia… k tipo de coisa devo fazer??

import java.io.*;

public class jogo {

//Metodo responsavel por ler dados informados no console 
static int LerTeclado(){ 
  try{ 
     BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)); 
               
     String s = BR.readLine(); 
     return Integer.parseInt(s); 
  } catch(IOException e) { 
     return(0); 
  } catch(NumberFormatException e) { 
     return(0); 
  }

}

public static void main(String[] args) throws IOException { 
    int iMoedasDoJogador, iMoedas, iControlaJogador; 
    
    //Informo o valor inicial do jogo 
    iMoedas = 22; 

    //Usarei um contador para diferenciar os jogadores 
    //Jogador 1=1 && Jogador 2 = 2 
    iControlaJogador = 1; 
    
    //Inicia o jogo com zero jogados 
    iMoedasDoJogador = 0; 
    
    //Faz enquanto existir 1 moeda ou mais 
    while(iMoedas >= 1) { 
        do { 
            	
            //Informativo de valores atuais restantes de Moedas 
            System.out.println(">> Existem " + iMoedas + " moedas no jogo <<\n"); 
            
            //Informa o erro SE o jogador informar valor superior a 3 
            if(iMoedasDoJogador > 3) { 
                System.err.println ("Não pode retirar mais que 3 moedas"); 
            } 
            
            //Mostra mensagem e recebe valor do jogador 
            System.out.print("Quantas moedas o jogador " + iControlaJogador + " deseja retirar? (Max 3)\n=> "); 
            iMoedasDoJogador = LerTeclado(); 
            System.out.println(); 
            
            //Verifica que jogador jogou e muda para o proximo 
            iControlaJogador = (iControlaJogador == 2)?1:2; 
            
        }while(iMoedasDoJogador > 3); //Actualiza quando o valor que o jogador informar for maior que 3 

        iMoedas = (iMoedas - iMoedasDoJogador); 
    } 
    
    //Informa qual jogador que Ganhou 
    System.out.println("*** O jogador " + iControlaJogador + " Ganhou! ***"); 
    
    //Finaliza o Programa 
    System.exit(0); 
}

}

Muito obrigado

1 Resposta

F

Olá Pinknys...

Que bom ver que meu código lhe foi útil. :grin:
Bem, por sorte ainda o tinha aqui, fiz umas modificações para funcionar de acordo com que você falou, veja só:

import java.io.*;

public class Jogo {

    //Metodo responsavel por ler dados informados no console
    static int LerTeclado(){
		try{ 
			BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
						
			String s = BR.readLine();
			return Integer.parseInt(s);
		} catch(IOException e) {
			return(0);
		} catch(NumberFormatException e) {
			return(0);
		}
	}
    
    public static void main(String[] args) throws IOException {
        int iMoedasDoJogador, iMoedas, iControlaJogador;
        
        //Informo o valor inicial do jogo
        iMoedas = 22;

        //Usarei um contador para diferenciar os jogadores
        //Jogador 1=1 && Jogador 2 = 2
        iControlaJogador = 1;
        
        //Faz enquanto existir 1 moeda ou mais
        while(iMoedas >= 1) {
            //Informativo de valores atuais restantes de Moedas
            System.out.println("\n>> Restam " + iMoedas + " moedas no jogo <<\n");

            //Controle do que o jogador informa
            iMoedasDoJogador = 0;
            
            //Mostra mensagem e recebe valor do jogador
            while(iMoedasDoJogador == 0){
                System.out.print("Quantas moedas o jogador " + iControlaJogador + " deseja retirar? (Max 3)\n=> "); 
                iMoedasDoJogador = LerTeclado();

                if(iMoedasDoJogador <= 0) {
                    System.err.println ("Deve ser informado um valor para continuar o jogo");
                    iMoedasDoJogador = 0;
                    continue;
                } else if(iMoedasDoJogador > 3){
                    System.err.println ("Não pode retirar mais que 3 moedas");
                    iMoedasDoJogador = 0;
                    continue;
                } else {
                    break;
                }
            }
            
            iMoedas = (iMoedas - iMoedasDoJogador);
            if(iMoedas <= 0){
                break;
            }
            
            //Verifica que jogador jogou e muda para o proximo
            iControlaJogador = (iControlaJogador == 2)?1:2;
        }
        //Informa qual jogador perdeu
        System.out.println("*** O jogador " + iControlaJogador + " perdeu! ***");
        
        //Finaliza o Programa
        System.exit(0);
    }
}

Roda ele ai e veja se seria isso. Vejá q é bem fácil.

Abraços,
Fábio Heleno

Criado 25 de abril de 2005
Ultima resposta 25 de abr. de 2005
Respostas 1
Participantes 2