Ich bin gerade dabei ein kleines Spiel zu entwickeln. Dies habe ich bisher auf einem Netbook gemacht, welches ein Intel Atom hat. u.a. habe ich einen ButtonCountdownThread geschrieben, der halt einen bestimmten Countdown auf einem Button anzeigt. Ich habe deisen auf dem netbook genau so eingestellt, dass 1sec auch einer sec entspricht und habe herausgefunden, dass für JButton.setText(String s) etwa 20ms gebraucht werden.
Also hier der relevante Code:
Nun habe ich dies auf meinem Gamer-PC (siehe Signatur) getestet und da vergehen 3secs des CDs in nur 2 Sekunden. Auch die Animationen (ziehmlich viele Befehle) läuft viel schneller ab, was das ganze Spielgeschehen unpassender macht.
Deshalb wollte ich fragen, ob ich irgendwie einstellen kann, dass diese Befehle auf unterschiedlichen PCs glaich lange dauern. Gibt es da von Java aus selber etwas oder muss ich das irgendwie kompliziert erstellen?
Ich habe schon überlegt, ob vielleicht ein Timer-Thread sinvoll wäre, mit dem ich dann feststellen kann, wie lange der Thread noch schlafen muss, damit er wieder "in time" ist. Das scheint mir aber sehr kompliziert zu werden, weswegen ich lieber hier erst einmal um Hilfe bitten möchte, ob es auch etwas einfacheres gibt.
Danke schon im Voraus für eure Mitarbeit.
mfg
BH16
Also hier der relevante Code:
Java:
for (int i = cd; i > 0; i-=70) {
b.setText((i/1000) + " s");
try {
Thread.sleep(50);
} catch (InterruptedException e) {e.printStackTrace();}
}
Nun habe ich dies auf meinem Gamer-PC (siehe Signatur) getestet und da vergehen 3secs des CDs in nur 2 Sekunden. Auch die Animationen (ziehmlich viele Befehle) läuft viel schneller ab, was das ganze Spielgeschehen unpassender macht.
Deshalb wollte ich fragen, ob ich irgendwie einstellen kann, dass diese Befehle auf unterschiedlichen PCs glaich lange dauern. Gibt es da von Java aus selber etwas oder muss ich das irgendwie kompliziert erstellen?
Ich habe schon überlegt, ob vielleicht ein Timer-Thread sinvoll wäre, mit dem ich dann feststellen kann, wie lange der Thread noch schlafen muss, damit er wieder "in time" ist. Das scheint mir aber sehr kompliziert zu werden, weswegen ich lieber hier erst einmal um Hilfe bitten möchte, ob es auch etwas einfacheres gibt.
Danke schon im Voraus für eure Mitarbeit.
mfg
BH16