Hallo werte JAVA-Community
Stehe gerade vor einem Problem. Ich schreib gerade 'n kleines Spiel, in welchem unter anderem der Spielerzustand als JProgressBar dargestellt wird (Lebenspunkte etc.).
Ausgangslage:
Spieler ruht sich aus... in diesem Zustand regenieren sich seine Ausdauerpunkte um 2 pro Sekunden. (bei 100 Punkten zu regenerieren also 200 Sekunden). Da ich gestern keinen Internetzugang hatte und ausem FF keine "Pause"-Funktion wusste, hab ich mir kurzerhand selbst eine geschrieben.
Der Programmablauf
- Spieler klickt "Ausrufen"
- Spielfigur wird blockiert
Schleife (solange Ausdauerpunkte != voll)
{
pause();
ausdauer++
bar neu zeichnen;
}
Das Problem nun: Die Bar wird erst am Ende der "Ausruhe"-Zeit neu gezeichnet, statt kontinuierlich bei jedem Schleifendurchgang - und das obwohl ich nach jedem ändern des Bar-Values validate() und repaint() aufrufe...
Pause-Klasse:
die "Ausruhen"-Schleife:
Bin für Tips (bzw. Winks mit den Zaunpfählen) dankbar
Stehe gerade vor einem Problem. Ich schreib gerade 'n kleines Spiel, in welchem unter anderem der Spielerzustand als JProgressBar dargestellt wird (Lebenspunkte etc.).
Ausgangslage:
Spieler ruht sich aus... in diesem Zustand regenieren sich seine Ausdauerpunkte um 2 pro Sekunden. (bei 100 Punkten zu regenerieren also 200 Sekunden). Da ich gestern keinen Internetzugang hatte und ausem FF keine "Pause"-Funktion wusste, hab ich mir kurzerhand selbst eine geschrieben.
Der Programmablauf
- Spieler klickt "Ausrufen"
- Spielfigur wird blockiert
Schleife (solange Ausdauerpunkte != voll)
{
pause();
ausdauer++
bar neu zeichnen;
}
Das Problem nun: Die Bar wird erst am Ende der "Ausruhe"-Zeit neu gezeichnet, statt kontinuierlich bei jedem Schleifendurchgang - und das obwohl ich nach jedem ändern des Bar-Values validate() und repaint() aufrufe...
Pause-Klasse:
Code:
public abstract class pause
{
private static long pauseTime;
private static long pauseStart;
private static long pauseEnd;
public static void pause(int miliseconds)
{
pause.pauseTime = miliseconds;
pause.pauseStart = System.currentTimeMillis();
pause.pauseEnd = pause.pauseStart + pause.pauseTime;
while (System.currentTimeMillis() < pause.pauseEnd)
{
// einfach mal Pause machen...
}
}
}
die "Ausruhen"-Schleife:
Code:
for (int i = player.getInstance().getEndurance() ; i < 100 ; i++)
{
player.getInstance().incrementEndurance(); // addiert +1 zu endurance
updateBars(); // setzt progressbar-value
refresh(); // validate() & repaint()
pause.pause(500); // pause-funktion gemäss oberem listing
}
Bin für Tips (bzw. Winks mit den Zaunpfählen) dankbar