Hallo zusammen,
testweise schreibe ich gerade eine sehr einfache Version von Snake - nur um die grundlegenden Dinge zu begreifen.
Tutorials habe ich mir einige angesehen. Das Problem was ich im Moment habe ist folgendes: Da die Schlange sich ja nicht zu schnell bewegen soll, muss ich den Thread in der Update Schleife schlafen legen. Gleichzeitig muss ich ja aber trotzdem alle Tastatur eingaben abfangen. Gerade weil bei Snake kein einziger Tastendruck ignoriert werden darf.
Die Schleife sieht nun bei mir so aus:
Die checkKeyboard sieht so aus:
Die Steuerung funktioniert zwar, ist aber so ungenau, dass man sich kaum traut dem Bildschirmrand näher zu kommen... woran könnte das liegen?
lg Toto
testweise schreibe ich gerade eine sehr einfache Version von Snake - nur um die grundlegenden Dinge zu begreifen.
Tutorials habe ich mir einige angesehen. Das Problem was ich im Moment habe ist folgendes: Da die Schlange sich ja nicht zu schnell bewegen soll, muss ich den Thread in der Update Schleife schlafen legen. Gleichzeitig muss ich ja aber trotzdem alle Tastatur eingaben abfangen. Gerade weil bei Snake kein einziger Tastendruck ignoriert werden darf.
Die Schleife sieht nun bei mir so aus:
Java:
while (!Display.isCloseRequested()) {
checkKeyboard(); /*Tastatureingaben werden verarbeitet */
bewegeSchlange(); /* Schlange wird um die aktuelle Richtung fortbewegt */
this.render(); /* Alles wird gezeichnet */
try {
Thread.sleep(120); /* Thread wird schlafen gelegt */
} catch (InterruptedException inte) {
inte.printStackTrace();
}
Display.update(); /* Display wird geupdated */
}
Die checkKeyboard sieht so aus:
Java:
public void checkKeyboard() {
if (Keyboard.isCreated()) {
while (Keyboard.next()) {
int k = Keyboard.getEventKey();
if (direction != RECHTS &&
k == Keyboard.KEY_RIGHT && direction != LINKS) {
direction = RECHTS;
} else if (direction != LINKS &&
k == Keyboard.KEY_LEFT && direction != RECHTS) {
direction = LINKS;
} else if (direction != OBEN
&& k == Keyboard.KEY_UP && direction != UNTEN) {
direction = OBEN;
} else if (direction != UNTEN
&& k == Keyboard.KEY_DOWN && direction != OBEN) {
direction = UNTEN;
} else if (k == (Keyboard.KEY_ESCAPE)) {
init();
}
}
}
}
Die Steuerung funktioniert zwar, ist aber so ungenau, dass man sich kaum traut dem Bildschirmrand näher zu kommen... woran könnte das liegen?
lg Toto