Parar Laço For

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:

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

Para parar um for use o comando

break;

[quote=CristianPalmaSola10]Para parar um for use o comando

break; [/quote]

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

Oi,

Sugestão:

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

Tchauzin!

[quote=lina]Oi,

Sugestão:

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

Tchauzin![/quote]

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.

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

[code]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[/code]

Oi,

Exemplo simples:

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

[code]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"
    		)        		
    	);
    }[/code]

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á:

[code]synchronized (io_th_movimenta){

io_th_movimenta.nofity();

}[/code]

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

Tchauzin!

1 curtida

Oi,

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

Tchauzin!

Coloca um break na bagaça =D