Ciao a tutti, sto creando un giochino in java nel quale vengono lanciate delle palline e con il mouse devono essere colpite cliccando il tasto sx(in poche parole è un tiro al piattello).
Allora, veniamo al problema...il movimento della pallina è simulato tramite un thead che fa muovere una JLabel su cui è disegnata una pallina... è presente un altro thread che lancia le palline fino a quando il giocatore non finisce le "vite" a sua disposizione...
Il lanciatore delle palline ha questo metodo run:
Il problema è che anche se il giocatore finisce le "vite" a sua disposizione, continuano a girare altre palline lanciare in precedenza.public void run(){
try{
while(giocatore.getVite()>=0){
cielo.addPipistrello();
sleep((int)(1000+(Math.random()*2000)));
}
fine=true;
cielo.setVisible(false);
cielo.pulisci();
FinePartita f=new FinePartita(giocatore); // è una JDilog che si apre appena finisce la partita.
f.setVisible(true);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
Credo che il problema stia nella sleep. Infatti il metodo prima di uscire dal while deve aspetta un tempo compreso tra 1 e 3 sec (durata della sleep), quindi non può dare il segnale di fine partita alle palline che devono essere cancellate.
Spero di essere stato chiaro nella spiegazione del problema. Se non lo fossi stato fatemi sapere.
Come posso rislvere questo problema?