Criando um Listener

2 respostas
d34d_d3v1l

Gente,

gostaria de saber se é possível criar um Listener para verificar o conteudo de alguns “labels” … É por que estou fazendo um jogo de truco, e na janela da mesa um painel que contém as informações:

“A rodada está valendo” (label1)
“1” (label2)
“pontos” (label3)

Rodada 1: (label4) … (label7)
Rodada 2: (label5) … (label8)
Rodade 3: (label6) … (label9)

Computador (label10) 0 (label12)
Jogador (label11) 0 label13)

as labels 7, 8 e 9 que são os “…” assim que uma rodada acaba, ela vai colocar quem ganhou “CPU” “PC” ou “DRAW” em caso de empate…

e as labels 12 e 13 é onde ficará o placar…

Preciso criar um listener que verifique o seguinte:
(o código seguinte é apenas um pseudocódigo)

SE a label7 e a label8 for igual a PC
o JOGADOR GANHOU os PONTOS

SE a label7 e a label8 for igual a CPU
o COMPTUADOR ganhou os pontos

SE a label7 for igual a DWAW
vale a mao da maior (termina na rodada 2)

e assim por diante…

E depois preciso de um listener parecido, mas para ficar verificando o placar…

e assim por diante…

De qualquer maneira, isso é possível? Podem me ajudar com alguma referencia ou exemplo?

Agradeço desde já,
abrazz

2 Respostas

ViniGodoy

Estranho. Me parece que não é no label que o listener deveria estar, mas na classe de negócio que atualiza esse label.

d34d_d3v1l

Não sei se isto vai ajudar a entender, mas criei um método ao invés do listener… de uma olhada por favor:

public void imitacaoListenerRodada() {
        switch (rodadaAtual) {
            case 1:
                if (campo_rod1.getText().equals("DRAW")) { //se a primeira rodada tiver empata, vale apenas a 3 rodada (o desempate)
                    rodadaAtual = 3;
                } else {
                    rodadaAtual++;                                     //caso contrário siga para a proxima rodada
                }

                break;

            case 2:
                if (campo_rod1.getText().equals(campo_rod2.getText())) {                  //se o label da rodada1 for igual ao label da rodada2 significa que essa pessoal ganhou...
                    setaPlacar(campo_rod1.getText());                                                //atualiza o placar
                    distribuir_cartas();                                                                       //distribui novas cartas
                    rodadaAtual = 1;                                                                         //volta a rodada 1
                    cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF"))); //icones das cartas que foram jogadas ficam 'vazias'
                    cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));  
                    campo_rod1.setText("...");     //volta os labels da rodada para o 'default' que seria os "..."
                    campo_rod2.setText("...");
                    campo_rod3.setText("...");
                    campo_rodada.setText("1");      // o valor da rodada (caso tenha truco ou nao) volta para 1 
                    break;
                } else {
                    rodadaAtual++;                       //se nao ganhou, vai pra rodada 3
                }
                break;

            case 3:
                if (campo_rod1.getText().equals("DRAW")) {
                    setaPlacar(campo_rod3.getText());
                    distribuir_cartas();
                    rodadaAtual = 1;
                    cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    campo_rod1.setText("...");
                    campo_rod2.setText("...");
                    campo_rod3.setText("...");
                    campo_rodada.setText("1");
                    break;
                }

                if (campo_rod1.getText().equals(campo_rod3.getText())) {
                    setaPlacar(campo_rod1.getText());
                    distribuir_cartas();
                    rodadaAtual = 1;
                    cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    campo_rod1.setText("...");
                    campo_rod2.setText("...");
                    campo_rod3.setText("...");
                    campo_rodada.setText("1");
                    break;
                }

                if (campo_rod2.getText().equals(campo_rod3.getText())) {
                    setaPlacar(campo_rod2.getText());
                    distribuir_cartas();
                    rodadaAtual = 1;
                    cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                    campo_rod1.setText("...");
                    campo_rod2.setText("...");
                    campo_rod3.setText("...");
                    campo_rodada.setText("1");
                    break;
                }

                if (campo_rod3.getText().equals("DRAW")) {
                    if (!campo_rod1.getText().equals("DRAW")) {
                        JOptionPane.showMessageDialog(null, "Empate... Ganha quem fez a Primeira Rodada!");
                        setaPlacar(campo_rod1.getText());

                        distribuir_cartas();
                        rodadaAtual = 1;
                        cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                        cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                        campo_rod1.setText("...");
                        campo_rod2.setText("...");
                        campo_rod3.setText("...");
                        campo_rodada.setText("1");
                        break;
                    } else {
                        JOptionPane.showMessageDialog(null, "Empate... Ninguem ganhou!!");
                        distribuir_cartas();
                        rodadaAtual = 1;
                        cartaJogadaAdv.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                        cartaJogadaPC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/blank.GIF")));
                        campo_rod1.setText("...");
                        campo_rod2.setText("...");
                        campo_rod3.setText("...");
                        campo_rodada.setText("1");
                        break;

                    }
                }


                break;

        }

    }

deu para entender mais ou menos?

Estou com outra dúvida, por que como estou fazendo agora, a sequencia está assim:
Jogador joga -> PC jogada -> Jogador Joga -> PC joga

e na verdade não é assim linear… Quem joga a segunda rodada é quem fez a primeira… ou então quem joga a terceira rodada(caso de empate na primeira) é quem começou na primeira… e preciso ajeitar isso!! Estou meio disnortiado hehehe

abraços!!

Criado 23 de dezembro de 2010
Ultima resposta 23 de dez. de 2010
Respostas 2
Participantes 2