Frage von Lazerion, 74

Wie kann ich einen Countdown für "World of zuul" erstellen(Bluej)?

Habe das Spiel "World of Zuul" mit BlueJ erstellt, kriege aber keinen Countdown hin. Also das ich bspw. 70 Sekunden habe um mein Ziel zu erreichen sonst kommt "GameOver"+"\n"+"Zeit ist abgelaufen" oder so ähnlich

Expertenantwort
von KnusperPudding, Community-Experte für Java, 60

Erstelle einen parallelen Thread, den du 70 Sekunden lang pausierst, und anschließend deinen Frame mit einer GameOver Meldung aktualisiert.

Kommentar von Lazerion ,

Nochmal für Anfänger? :D

Kommentar von KnusperPudding ,

Naja, du sagst du hast ein Spiel programmiert, dessen Inhalt nur du kennst. Anhand der Informationen die ich der Frage entnehmen kann, ist das eigentlich alles was ich empfehlen kann. Aber ich erläutere gerne was ich meine.

Sofern du mit Java-Swing arbeitest, wirst du vermutlich einen Frame haben, in dem sich dein Spiel abspielt. Oder? - Innerhalb dieses Frames vermute ich jetzt einfach mal genau einen Thread in dem das Spiel läuft. 

Nun ist mein Tipp, einen neuen Thread zu starten, der Parallel zu deiner Anwendung läuft. Dieser Thread teilt dann nach 70 Sekunden dem anderen Thread mit, dass der Gameover-Screen angezeigt werden soll.

Da ich weder den Sourcecode deines Spiels sehe, noch eine Ahnung habe, welche Komponenten du verwendest oder wie das Spiel aussieht, kann ich nur mit diesem Tipp dienen.

Kommentar von Lazerion ,

Okay... logisch.

hier habe ich die Spiel.java

Es ist ein texbasiertes "Spiel".... Also keine GUI.

http://pastebin.com/SvHZxmzA

Kommentar von KnusperPudding ,

zwar der Code nicht ausführbar, aber ich verstehe was du meinst, und somit kann ich dir einen Tipp geben.

Es gibt viele Option, deshalb mein Vorschlag:

1. Du deklarierst eine boolean Instanz-Variable : istSpielEnde. (Kannst du direkt mit false initialisieren)

2. Du erstellst eine Methode: gameover() und füllst diese mit dem Inhalt den du dir vorstellst. aber setzt zuletzt die Variable: istSpielEnde = true

4. Nun erstellst du einen neuen Thread (Gibt genug Beispiele zu finden wie man das macht). In der run() Methode des Threads verwendest du ein Thread.sleep(); für 70 Sekunden, in der darauffolgenden Zeile rufst du die Methode gameover()  auf.

5. du Startest den Thread (vor der Endlosschleife in der methode: spielen())

6. du erweiterst die Bedingung der Endlosschleife um: !istSpielEnde, sodass beim GameOver die endlosschleife unterbrochen wird.

Keine passende Antwort gefunden?

Fragen Sie die Community