Parar Laço For

9 respostas
B

Boa Noite !

Estou desenvolvedo uma lógica para fazer um jogo, porém emperrei em algo que ocorreu no desenvolvimento dde outro jogo no caso da memória e o que seria esse erro ? Parar um laço for.

Explicando melhor oq seria:

Meu jogo será mais ou menos um quiz de perguntas, e quando o usuário acerta uma pergunta seu carrinho move, só que o problema está na movimentação desse carrinho. No caso quero que ele se mecha aos poucos e não tudo de uma vez !

A movimentação desse carrinho é controlado por um laço for e quando o usuário acerta esse carrinho é movido de uma vez só e não aos poucos devido ao laço for. Antes que digam sobre o Thread.sleep, já testei e percebi que ele não para o LAÇO, mas sim a aplicação.

Se alguém puder dar uma luz eu agradeceria.

Muito obrigado :slight_smile:

9 Respostas

nel

Curiosidade, um método recursivo não lhe seria útil?

CristianPalmaSola10

Para parar um for use o comando

break;
douglaskd

CristianPalmaSola10:
Para parar um for use o comando

break;

ele quer pausar por um tempo em milissegundos e depois continuar…

lina

Oi,

Sugestão:

Crie uma Thread para movimentação do carrinho. Essa Thread ficará em espera (wait) até ser notificada (notify).

Tchauzin!

B

lina:
Oi,

Sugestão:

Crie uma Thread para movimentação do carrinho. Essa Thread ficará em espera (wait) até ser notificada (notify).

Tchauzin!

Primeiramente gostaria de agradecer a todos pelas respostas, mas como o douglaskd disse quero parar o laço em mili-segundos, e é isso que eu não consigo saber e gostaria se tem algum comando como o break, ou um método como o Thread.sleep.

Quanto a sua sugestão, você poderia dar um pequeno exemplo? Pois nunca usei esse wait e notify.

B

Pra ficar mais claro darei o exemplo do jogo da memória:

for(int j = 0 ; j<button.length; j++){//// FOR INICIA AQUI
			
			
			if (e.getSource() == button[j] && contador == 0){/// PRIMEIRO IF
				
				 a = button[j].getIndex();							
				    primeiro = j;										
				    button[primeiro].setFaceUp(true);
				    contador++;
					repaint();
					break;				
					
		     } ///FIM PRIMEIRO IF

			if  (e.getSource() == button[j] && contador == 1){///SEGUNDO IF
			b = button[j].getIndex(); 
			segundo = j;
			button[segundo].setFaceUp(true);// (SEGUNDA IMAGEM NÃO APARECE, ISSO PQ O LAÇO FOR ESTÁ EM EXECUÇÃO, NO CASO A PAUSA DO LAÇO TERIA DE SER FEITA AQUI !)
					
			if (a == b){
	        	acertou = true;
	        	contador = 0;
	        	
	        }
	        if (a != b){
	        	acertou = false;
				contador = 0;
	        }
			
                         if (acertou == true){
				button[primeiro].setEnabled( false );
				button[segundo].setEnabled( false ); 
				
			}
			
			if (acertou == false){
				button[primeiro].setFaceUp(false);
				button[segundo].setFaceUp(false); 
				
			}

} /// FIM SEGUNDO IF
}// FIM LAÇO FOR
lina

Oi,

Exemplo simples:

Primeiro você cria a Thread responsável por movimentar o carrinho.

private final
        Thread			ThreadMovimenta()
        {
        	return
        	(
        		new Thread
        		(
        			new Runnable()
        			{
        				public
        				void			run()
        				{
        					while	(!io_th_movimenta.isInterrupted()) {

        						synchronized (io_th_movimenta){
        							io_th_movimenta.wait(0); // aguarda um notify.
							        }
        						
        						// Codigo para movimenta o carrinho
        					}
        				}
        			},
        			"ThreadMovimenta.Carrinho"
        		)        		
        	);
        }

No construtor de sua classe, você a instancia e faz a start dela:

Thread io_th_movimenta = ThreadMovimenta();
io_th_movimenta.start();

Quando o usuário acertar a questão do jogo, a sua ação será:

synchronized (io_th_movimenta){

   io_th_movimenta.nofity();

}

Isso fará com que a Thread saia do Wait(0) e processe seu código de movimentação.

Tchauzin!

lina

Oi,

Cara. Que raiva. Meus códigos ficam todos desnorteados.

Tchauzin!

M

Coloca um break na bagaça =D

Criado 7 de fevereiro de 2012
Ultima resposta 8 de fev. de 2012
Respostas 9
Participantes 6