switch(m_internalState){caseMenu:int xpos =Mouse.getX();int ypos =Mouse.getY();if((xpos>0&&xpos<200)&&(ypos>0&&ypos<100)){if(input.isMouseButtonDown(0))
m_internalState =GameState.SimpleGame;
m_gameTime =0;}break;caseSimpleGame:
m_gameTime += delta;
m_player.Update(delta, gc.getInput());for(int i =0; i < m_arrayOfCars.length;++i)
m_arrayOfCars[i].Update(delta);for(int i =0; i < m_arrayOfCars.length;++i)if(m_arrayOfCars[i].GetBoundingRectangle().intersects(m_player.GetBoundingRectangle())){ m_internalState =GameState.Score;}break;caseScore:/* damit das nicht ausufert spar ich mir den Rest, hier wird die vergangene Game Time angezeigt, und per MouseInput wieder in das Menu geleitet **/
funktioniert soweit alles wunderbar, nur wird die GameState.SimpleGame nicht zurückgesetzt, das heißt wenn ich vom Score ins Menü gehe und von dort aus wieder ins SimpleGame haben die Autos wieder die position in der ich die State verlassen habe, wie kann ich das verhindern? Bzw.: Wie setzte ich sie wieder auf die start Position?
Zur Erklärung: Ich schreibe ein kleines Spiel mit Java & Slick
Ich wäre dankbar um jede Idee, da ich echt nicht darauf komme und noch ein Frischling bin
// Sry, falls das keine Anfängerfrage mehr ist oder ich allgemein irgendwie im falschen bin.
Das Problem ist: du erzeugst ein neues m_internalState und das wird nicht nach "aussen" durchgereicht (also am Ende der Methode wieder verworfen). Entweder als globales Objekt deklarieren oder als Rückgabewert der Methode definieren.
Dachte eigentlich das wär schon Global.
Ansonsten per return, wie soll ich das anstellen? Ich weiß das return etwas zurückgibt etc. aber inwiefern beeinflusst das hier meine Update Methode, diese soll doch jedes mal "frisch" starten.
[...] nur wird die GameState.SimpleGame nicht zurückgesetzt, das heißt wenn ich vom Score ins Menü gehe und von dort aus wieder ins SimpleGame haben die Autos wieder die position in der ich die State verlassen habe
Naja, an welcher Stelle des Programms setzt du die Autos denn wieder auf ihre Startpositionen? Von alleine machen die das nicht. Du müsstest dir schon selber soetwas wie eine Reset-Methode schreiben um diese dann in der switch-Anweisung aufzurufen.