Hi ich hab da ein kleines problem mit der spielschleife.
ich finde leider nur schleifen die immer wieder von einem timer aufgerufen
werden dies will ich aber nicht ich möchte eine schleife die sich selbst startet
wen sie durchgelaufen ist und habe es nun mit der run() methode versucht leider
wird diese niemals ausgeführt und wen ich dies manuell versuche wird das programm
ausgeführt allerdings wird das frame nie geöffnet.
mein ziel ist es eine spielschleife zu schreiben welche:
1. systemzeit abfragen (start)
2. berechnungen asführen
3. systemzeit abfragem(stop)
4. (start - stop) * 1000 = fps
5. repaint();
ich habe derzeit diese schleife:
zuvor hatte ich dieseschleife:
Problem bei der schleife war das ich im debug modus min 75 beim timer einstellen
musste weil sonst ein nullpointer auftrat (programmierfehler bild sollte geladen
werden aber die berechnung zur festlegung war noch nicht so weit) zudem habe
ich hier eine feste fps zahl ich möchte aber eine flexible. also ich möchte nicht
festlegen das es alle x ms berechnet wird sondern ich möchte als fps nur abfragen
wie lange es gedauert hat dadurch erreiche ich eine maximale fps zahl welche bei
zu hoher rechenlast in den keller fällt.
Links Tipps beispiel beschreibungen und vorallem quellcode sind gesucht.
bitte bedenkt ich bin noch anfänger und will auch verstehen was ich da mache.
ich finde leider nur schleifen die immer wieder von einem timer aufgerufen
werden dies will ich aber nicht ich möchte eine schleife die sich selbst startet
wen sie durchgelaufen ist und habe es nun mit der run() methode versucht leider
wird diese niemals ausgeführt und wen ich dies manuell versuche wird das programm
ausgeführt allerdings wird das frame nie geöffnet.
mein ziel ist es eine spielschleife zu schreiben welche:
1. systemzeit abfragen (start)
2. berechnungen asführen
3. systemzeit abfragem(stop)
4. (start - stop) * 1000 = fps
5. repaint();
ich habe derzeit diese schleife:
Java:
@Override
public void run() {
long fpsCountStart;
long fpsCountStop;
long fpsWork;
while (run) {
fpsCountStart = System.nanoTime();
//berechnungen
fpsCountStop = System.nanoTime();
fpsWork = (fpsCountStart - fpsCountStop) * 1000;
fps = 5;
repaint();
}
}
public void paint(Graphics g) {
g.drawString("FPS: " + fps, 10, 20);
}
zuvor hatte ich dieseschleife:
Java:
public Board(int frameWidth, int frameHeight) {
setFocusable(true);
setDoubleBuffered(true);
timer = new Timer(75, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e) {
player.move();
repaint();
}
Problem bei der schleife war das ich im debug modus min 75 beim timer einstellen
musste weil sonst ein nullpointer auftrat (programmierfehler bild sollte geladen
werden aber die berechnung zur festlegung war noch nicht so weit) zudem habe
ich hier eine feste fps zahl ich möchte aber eine flexible. also ich möchte nicht
festlegen das es alle x ms berechnet wird sondern ich möchte als fps nur abfragen
wie lange es gedauert hat dadurch erreiche ich eine maximale fps zahl welche bei
zu hoher rechenlast in den keller fällt.
Links Tipps beispiel beschreibungen und vorallem quellcode sind gesucht.
bitte bedenkt ich bin noch anfänger und will auch verstehen was ich da mache.
Zuletzt bearbeitet von einem Moderator: