Hallo,
ich schreibe momentan ein 2D-Spiel. Ich nutze ein Enum, dass den aktuellen Stand des Spiels angibt: MENU, GAME, SCORE und END
Die Klasse Main besitzt eine Instanzvariable, die den aktuellen Status speichert und auf die alle anderen Klassen zugreifen.
Die Klasse Draw überprüft nun den Status und zeichnet dementsprechend den Bildschirm.
Ich habe festgestellt, dass am Anfang der Status zwar korrekt auf MENU steht, im switch-Block aber trotzdem alle drei Methoden aufgerufen werden! Nun werden alle drei Bildschirme übereinander gezeichnet, was das Spiel logischerweise ungenießbar macht. Drücke ich dann die Start-Taste wird der Status auf GAME gestellt und korrekterweise nur drawGame() aufgerufen.
Habe ich da irgendwas falsch gemacht?
Anmerkung:
Die Klasse Draw implementiert Runnable und wird als Thread von Main aufgerufen. Aber ich denke nicht, dass das was damit zu tun haben könnte, oder?
ich schreibe momentan ein 2D-Spiel. Ich nutze ein Enum, dass den aktuellen Stand des Spiels angibt: MENU, GAME, SCORE und END
Java:
public enum GameStatus {
MENU(0),
GAME(1),
SCORE(2),
END(3);
private int id;
GameStatus(int id) {
this.id = id;
}
int getId() {
return id;
}
}
Die Klasse Main besitzt eine Instanzvariable, die den aktuellen Status speichert und auf die alle anderen Klassen zugreifen.
Die Klasse Draw überprüft nun den Status und zeichnet dementsprechend den Bildschirm.
Java:
public void draw() {
switch(main.getStatus()) {
case MENU: drawMenu();
case GAME: drawGame();
case SCORE: drawScore();
}
}
Ich habe festgestellt, dass am Anfang der Status zwar korrekt auf MENU steht, im switch-Block aber trotzdem alle drei Methoden aufgerufen werden! Nun werden alle drei Bildschirme übereinander gezeichnet, was das Spiel logischerweise ungenießbar macht. Drücke ich dann die Start-Taste wird der Status auf GAME gestellt und korrekterweise nur drawGame() aufgerufen.
Habe ich da irgendwas falsch gemacht?
Anmerkung:
Die Klasse Draw implementiert Runnable und wird als Thread von Main aufgerufen. Aber ich denke nicht, dass das was damit zu tun haben könnte, oder?