Ir para conteúdo

POWERED BY:

Arquivado

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

VieRa

[Resolvido] Como pausar?

Recommended Posts

Estou desenvolvendo um jogo da memoria para um trabalho da faculdade e estou com um problema e n consigo resolver

 

estou usando labels e o evento mouseClicked

o problema é o seguinte, quando clico na segunda carta(segundo label), faço ela ser mostrada no label(desvirda) e comprada com a primeira carta clicada

como na execução isso acontece muito rapido o usuario não tem tempo de ver a exibição da carta no segundo label

quero usar um método para travar(pausar) a execução por alguns segungos(2/3seg no max) antes q as cartas sejam comparadas para q o usuario possa ver a exibição

 

ja tentei varias formas e pesquisei muito, thread.sleep, ateh mesmo tentei realizar uma parada na gambiarra com um método

 

//método pausa, faz uma pause de n segundos
   public void pausa(int n){   
       long t0, t1;

t0 = System.currentTimeMillis();

do{
           t1 = System.currentTimeMillis();
       }while ((t1 - t0) < (n * 1000)) ;
    }

 

mas o problema eh que quando chamo o método para pausar, seja ele esse ou ateh mesmo o thread.sleep ou outro

no momento do click o método de pausa eh chamado primerio doq os métodos de exibição e comparação das cartas

ou seja, quando clico na segunda carta, o sistema trava por 3 segundos(por exemplo) e depois faz as comparações e exibição

 

não sei como resolver isso, se eh problema em chamar o evento mouseClicked ou usar um label

n faço a minima idéai de como solucionar e ja tentei varias formas

se alguem souber alguma coisa ou tiver alguma idéia manda ai

 

esse é o código do evento mouseClicked dos meus labels se for preciso

 

//verifica se a carta ja não esta sendo exibida
       if(cartas[0].getEstado()==false){           
       //verifica se o label está habilitado
       if(lbCarta1.isEnabled()!=false){
           //verifica se é o primeiro click
           if(click<1){
               //incrementa o numero de clicks para 1(um)
               click=1;

               //mostra a carta clickada
               lbCarta1.setIcon(new ImageIcon(cartas[0].changeEstado()));

               //salva a carta do primeiro click
               carta1 = new Carta(cartas[0].getId(), cartas[0].getImgCarta());
           }
           //verifica se é o segundo click
           else if(click==1){

               //incrementa o numero de jogadas
               jogadas++;

               //preenche o campo das jogadas
               textJogadas.setText(jogadas.toString());

               //mostra a carta clickada
               lbCarta1.setIcon(new ImageIcon(cartas[0].changeEstado()));

               //salva a carta do segundo click
               carta2 = new Carta(cartas[0].getId(), cartas[0].getImgCarta());

               //-----
               //AQUI DEVERIA SER FEITA UMA PAUSA
               //-----

               //verifica se as cartas formam um par
               if(engine.verificaJogada(carta1, carta2)==true){//se sim

                   //busca as cartas no array das cartas as salva dizendo que foram descobertas
                   for(int i=0;i<cartas.length;i++){
                       if(carta1.getId()==cartas[i].getId())
                           cartas[i].setDescoberta(true);

                       if(carta2.getId()==cartas[i].getId())
                           cartas[i].setDescoberta(true);
                   }

                   //incrementa o score
                   score=score+30;

                   //preenche o campo dos pontos
                   textPontos.setText(score.toString());
               }

               //retorna o numero de clicks para 0(zero)
               click=0;

               //verifica o fim do jogo
               if(engine.getFim(cartas)==true){
                   //avisa que irá selecionar o paciente
                   Object[] opcoes1 = {"Sim", "Não"};
                   int op = JOptionPane.showOptionDialog(null, "Fim do jogo!\n Continuar jogando?\n", "Fim de Jogo",
                                                         JOptionPane.YES_NO_OPTION,
                                                         JOptionPane.QUESTION_MESSAGE, null, opcoes1, opcoes1[0]);

                   if(op==0){
                       cartas=engine.startJogo(dif, categ);

                       //faz o score final - score=score-(jogadas*2)
                       score=score-(jogadas*2);
                       //preenche o campo de pontos
                       textPontos.setText(score.toString());

                       //zera as jogadas
                       jogadas=0;
                       //preenche o campo das jogadas
                       textJogadas.setText(jogadas.toString());
                   }
                   else{
                       dispose();
                   }
               }

               //vira as cartas novamente
               inicializaCartas();
           }
       }
       }

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.