Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gustavo_eger

Exercicio ping pong

Recommended Posts

Bom dia pessoal, nao estou conseguindo resolver um exercício e gostaria de saber se alguem sabe a solução dele:

 

Em um jogo de ping pong, ganha o jogador que alcançar 21 pontos primeiro. Entretanto se a vantagem de pontos for menor que 2 pontos, o jogo deve continuar até que um dos jogadores tenha 2 pontos a mais o outro. Escreva o algoritmo para ser entregue ao juiz responsável pela contagem de pontos da partida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a origem deste exercicio?

Qual a sua dúvida sobre o algoritimo?

Chegou a desenvolver alguma coisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a origem deste exercicio?

Qual a sua dúvida sobre o algoritimo?

Chegou a desenvolver alguma coisa?

Cheguei a desenvolver:

 

public class PingPong {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean fim = false;
String codigo,vencedor = "";
int contE =0, contD=0;
do{
System.out.println("Informe o lado do ponto E(esquerdo) ou D(direito)");
codigo = input.next();
if(codigo.equalsIgnoreCase("e")){
contE++;
}else{
contD++;
}
if(contE == 21){
fim = true;
vencedor = "Jogador da Esquerda";
}else{
if(contD == 21){
fim = true;
vencedor = "Jogador da Direita";
}
}
}while(fim != true);
}
}
Se o jogo ocorresse até 21 pontos, o programa estaria certo, porem, se o jogo chegar a 20 a 20, terá que permitir a entrada dos codigos do ponto(E ou D) até um dos jogadores fizer 2 pontos consecutivos. Agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

public class PingPong {
	static boolean fim = false;
    static String codigo,vencedor = "";
    static int contE =0, contD=0,vantE=0, vantD=0;
    
	public static boolean ContarVantagem(){
		
			
	    	do{if(vantD == 1 && vantE == 1){
	    		vantD--;
	    		vantE--;
	    		}
	    		if(vantD == 0 || vantE == 0){
	    			if(codigo.equalsIgnoreCase("d")){
	    			vantD++;
	    		}else{
	    		vantE++;
	    		}
	    	}
	    	if(vantD == 2 || vantE == 2){
	    		if(vantD == 2){
	    			contD++;
	    			fim=true;
	    		}else{
	    			if(vantE == 2){
	    				contE++;
	    				fim=true;
	    			}
	    		
	    	
	    	}
	    }return fim;
	}while(vantD != 2 || vantE != 2);
	}
	
    public static void main(String[] args) {
    	
    	
    		Scanner input = new Scanner(System.in);
        
        
        
        do{
            System.out.println("Informe o lado do ponto E(esquerdo) ou D(direito) - Esquerdo("+vantE+") " + contE + " x " + contD + " Direito("+vantD+")");
            codigo = input.next();
            if(contD == 20 && contE == 20){
            	
            	ContarVantagem();
            }
            if(contD < 20 || contE < 20){	
            if(codigo.equalsIgnoreCase("e")){
            	
                contE++;
            }else{
                contD++;
            }
            }
            if(contE == 21){
                fim = true;
                vencedor = ("Jogador da Esquerda venceu: Esquerda("+vantE+") " + contE + " X " + contD + " ("+vantD+")Direita");
                System.out.println(vencedor);
            }else{
                if(contD == 21){
                    fim = true;
                    vencedor = ("Jogador da Direita venceu: Esquerda("+vantE+") " + contE + " X " + contD + " ("+vantD+")Direita");
                    System.out.println(vencedor);
                }
            }
        
               
        }while(fim != true);
        
    }
    } 

cara eu fiz assim e funcionou diboa... como eu sou novo no java tbm, eu demorei 3 dias pra fazer isso funcionar =D. Mas foi bom pq aprendi muito com esse exercicio.

EDITADO: eu tinha colocado os valores das variaveis em 19, para um teste mais rapido. colei a primeira vez sem trocar, agora eu trokei ai, tah certinho.

Como eu disse eu sou novo, devem ter muitas coisas nesse meu codigo que nao precisava, ou que deve ser bem mais simples e rapido pra fazer, seria legal alguem experiente dar umas dicas ai sobre oq mudar ai pra ficar mais rapido.

Soh pra constar, eu sei que daria para fazer isso sem o uso do metodo ContarVantagem. Mas eu quis usar o metodo para compreender direito como cria-lo e usa-lo. Achei bacana d+ fazer isso ai, 3 dias no trabalho com o tempo voando =D manda mais ai auihauiahauiha

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.