• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

krespo

verificar qual o vencedor

6 mensagens neste tópico

Boas pessoal.

Eu estou com uma duvida que é a seguinte: eu estou a fazer o jogo do 21 e queria saber como fasso para ver qual dos jogadores tem a pontuação mais perto ou igual de 21. Para tal eu tenho um atributo na classe jogador que é a pontuaçao mas eu agora não sei como fazer para comparar os valores desse atributo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Simples crias um método que com a pontuação de 2 jogadores primeira verifica se algum é igual a 21 se nenhum for verifica se algum deles passa os 21 se nenhum passar subtrai a 21 ao numero de pontos de cada um e vê qual o menor ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if(pontos1 < pontos2){
    return jogar1;
}
else{
    return jogar2
}

penso que não é muito difícil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se fossem só 2 jogadores nao havia problema. Mas eu meu problema e que o numero de jogadores é inserto pois é dado pelo utilizador e ainda para piorar os jogadores estao dentro de um arraylist. Eu for por aqui parte do codigo

 public void vencedor(){
    	for(int i=0;i<jogador21.size();i++){
    		if(jogador21.get(i).getPontuacao()==21)
    			System.out.println("O vencedor é"+jogador21.get(i).getNome());
    		
    		else
    			verifica(i);
    		  
    	}
    }
    
    public void verifica(int i){
    	if(jogador21.get(i).getPontuacao()>21)
    		System.out.println("perdeu");
    	else

Só que agora nao sei como fazer para ver qual dos jogadores tem a pontuaçao mais perto de 21

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não fazes uma ordenação do vector?

Usas um quicksort

import java.util.Comparator;
import java.util.Random;

public class Quicksort {
    public static final Random RND = new Random();      
    private void swap(Object[] array, int i, int j) {
        Object tmp = array[i];
        array[i] = array[j];
        array[j] = tmp;
    }
    private int partition(Object[] array, int begin, int end, Comparator cmp) {
        int index = begin + RND.nextInt(end - begin + 1);
        Object pivot = array[index];
        swap(array, index, end);                
        for (int i = index = begin; i < end; ++ i) {
            if (cmp.compare(array[i], pivot) <= 0) {
                swap(array, index++, i);
        }   }
        swap(array, index, end);        
        return (index);
    }
    private void qsort(Object[] array, int begin, int end, Comparator cmp) {
        if (end > begin) {
            int index = partition(array, begin, end, cmp);
            qsort(array, begin, index - 1, cmp);
            qsort(array, index + 1,  end,  cmp);
    }   }
    public void sort(Object[] array, Comparator cmp) {
        qsort(array, 0, array.length - 1, cmp);
    }
}

Ordenas o vector pelos pontos de cada jogador e fazes uma verificação se o que tem mais pontos é superior a 21, se for sai fora e vê o anterior (i--) e há de chegar ao jogador com a pontuação mais próxima de 21.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora