Greenfoot fehler?
Habe Asteroids geschrieben und bekomme den Code nicht gebacken
public void sterben(){ Actor actor = getOneIntersectingObject( Spieler1.class); if(leben==0){ World myWorld = getWorld(); myWorld.removeObject(this);
GameOver gameover = new GameOver(); myWorld.addObject(gameover, myWorld.getWidth()/2, myWorld.getHeight()/2); do{
}
while(Greenfoot.isKeyDown("space")==false);
System.out.println("test");
// }
// Greenfoot.setWorld(new Space());
// leben=4;
}
}
Will das er bei der do while schleife wartet bis space gedrückt wird. wenn ich den Code so ausführe zeigt er nicht mal den gameover Screen an. kann mir wer helfen??
1 Antwort
Tritt irgendeine Exception auf? Auf den ersten Blick kann ich keinen Fehler erkennen. Ich weiß aber auch nicht, wie deine anderen Methoden aussehen.
Allerdings solltest du NIEMALS mithilfe einer Schleife warten. Vor einigen Jahren hat man dies vielleicht noch getan, als es noch kein Multithreading gab. Heute ist dies definitiv zu vermeiden, denn du blockierst damit das gesamte Programm, auch die GUI. Unter Android würde dein Programm unter diesen Umständen sogar abstürzen.
Verwende stattdessen einen KeyListener, der jedes Mal aufgerufen wird, wenn eine Taste gedrückt wird. Sobald die Leertaste gedrückt wurde, führst du den nachfolgenden Code aus.
Danke ja weiß ich auch aber hab es jetzt mit einer Do schleife gemacht in der if mit nem delay steht es funktioniert und tut was es soll. Es soll ja auch alles blockieren ist ja der Sinn davon gewesen nur leider is das Programm immer abgestürzt. Aber vielen Dank für deine antwort