Fehler bei Thread.sleep()

Masterman431

Mitglied
Hi Leute,
Ich bin einsteiger in Java. Seit ca einem Jahr lerne ich in der Schule objektorientierte Programmierung mit BlueJ. Da ich aber immer der erste bin, der fertig ist u. eigenes interesse habe bin ich grad dabei den klassiker PONG zu programmieren. Als Basis dient mir die Engine Alpha. Damit mit der Ball eine flüssige Bewegung hat habe ich eine while Schleife eingebaut, die den Ball verschiebt und dann Pause macht.
Der Quelltext lautet:

while (this.ball.M_x <= 340) {
Thread.sleep(1000);
this.ball.verschiebenUm(34, 0);
}

Ich bekomme die Fehlermeldung:
" unreported exeption(...) must be caught or declared to be thrown down"

rot markiert ist (1000)

ich kann mir nichts darunter vorstellen. Kann mir einer von euch helfen?
danke schon mal im Vorraus^^
 
Schau dir die Signatur der Methode an! Es kann zu einer
Code:
InterruptedException
kommen. Diese musst da abfangen und geeignet darauf reagieren (oder, aber das kommt hier für dich vermutlich nicht in Betracht, du leitest sie weiter nach außen, ergänzt also in deinem Methodenkopf ein
Code:
throws InterruptedException

Siehe z.B. hier Thread (Java Platform SE 7 )
 
Kleiner Tipp noch:

Wenn ich das richtig sehe, wartest du eine Sekunde und brechnest dann die Verschiebung.
Das Problem ist, auch wenn es vermutlich noch nicht so auffällt, dass die Berechnung der Verschiebung eben unterschiedlich lange dauert (z.B auf verschieden starken Rechnern).
Das führt dazu, dass die Bewegung eben auch unterschiedlich schnell wird.

Besser ist es du wenn du die Zeit ermittelst, die der jeweilege Schleifendurchlauf gedauert hat und die Verschiebung in Abhängigkeit eben dieser Zeit berechnest (so das du so eine Einheit wie z.B pixel pro millisekunde bekommst).
 
Ok, ich hab jetzt keine Fehlermeldung mehr, aber der Ball wird nich verschoben. weder in der Graphik, noch in der Logik...

Quelltext:
if( x >= 0.33 && x <= 0.66) {
try{ while (this.ball.M_x <= 340) {
Thread.sleep(1000);
this.ball.verschiebenUm(34, 0);
}
}
catch (Exception e)
{
System.out.println("ERROR");
}
}

Ps: ich habs mit nem Youtube Tutorial gemacht und verstehe nicht ganz, was da steht.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben