Java; einzelne Methode pausieren?
Hi ;)
Momentan arbeite ich an meine praktischen Facharbeit in Informatik, nur leider habe ich ein Problem: Ich finde keine Möglichkeit eine EINZELNE Methode in meinem Spiel zu pausieren. Thread.sleep() und wait() habe ich schon ausprobiert. Doch dabei bleibt immer das ganze Spiel pausiert und nicht nur, die einzelne Methode (bzw. der einzelne JFrame).
Kennt ihr einen Weg, bloß eine Methode/ einen Frame anzuhalten, während der Rest des Spiels (mit dem "Hauptframe") weiter läuft?
Würde mich über jede (vielleicht) hilfreiche Antwort freuen ^^
3 Antworten
Ich glaube Du hast die Grundlagen noch nicht verstanden. Man hält keine Methoden an sondern immer nur den aktuellen Thread. Das heißt, wenn Du eine Swing-Anwendung hast die im wesentlichen in einem Thread läuft, wird immer die gesamte Anwendung anhalten (Anhalten des Event Dispatch Threads).
Beschreib mal Dein Ziel, dann können wir helfen.
Ok, es gibt mehre Möglichkeiten dies zu lösen. Je nach dem wie die Spiele umgesetzt sind ist es einfacher oder schwieriger. Ich würde versuchen, die Spiele anhaltbar zu machen (ohne den Thread anzuhalten). Wenn Dein Hauptspiel rundenbasiert ist, würde es reichen die Benutzereingaben zu unterbinden. Wenn es zeitbasiert ist (Arcade/Action) würde ich einen Spieltimer empfehlen - also etwas was die Spielzeit repräsentiert. Den würde man dann einfach anhalten und fortsetzen können. Jedes einzelne Spiel könnte eine Instanz dieses Timers verwenden und man könnte sogar Zeitlupe oder Zeitraffer einbauen.
Noch einmal Danke an alle :)
Ich habe das Problem gelöst, indem ich es nicht gelöst habe, denn auch mein Informatiklehrer konnte meinen Fehler nach 1 1/2 Stunden nicht finden.... Wir haben wirklich alles ausprobiert, was hätte theoretisch funktionieren müssen, doch anscheinend liegt der Fehler irgendwo anders.
Man hält nur Threads an, aber keine Methoden
Ja, aber es muss doch eine Möglichkeit geben, nur eine Methode oder eine Anweisung zu pausieren und nicht den kompletten Thread, oder?
Nein, überleg mal selbst... Ein Angestellter wird von Chef beauftragt Papier zu holen, da er einen Brief schreiben will. Dazu braucht er einen Schlüssel von der Sekretärin, die sofort losgeht diesen Schlüssel zu holen. Wann wird der Brief fertig wenn die Sekretärin nun aufgehalten wird? - Hälst Du eine Methode an - steht die ganze Aufrufkette....
Okay, trotzdem danke ^^ (Die Hoffnung starb zuletzt)
Stimmt schon, so gut kenne ich mich noch nicht mit Threads aus....
Also: Ich habe einen "Hauptframe", auf dem das eigentliche Spiel läuft. Klickt man jetzt auf einen Button, öffnet sich ein neuer Frame mit dem jeweiligen "Minispiel". Um das Ergebnis aus dem Minispielframe in den Hauptframe zu übergeben, möchte ich nun, dass der Hauptframe nach öffnen des Minispiels einige Zeit wartet, bis das Minispiel beendet ist und dann via einer get-Methode das Ergebnis des Minispiels übernimmt...
Anschließend soll der Hauptframe mit dem eigentlichen Spiel normal weiterlaufen. Ich hoffe, das war jetzt halbwegs verständlich...