Fortschrittskurs „Timer II - Countdown“
Voraussetzung: "Forschrittskurs „Timer I - Zeitstress“
Wir nehmen uns das Cartrigde aus „Timer I – Zeitmessung“ und ersetzen den normalen Timer durch einen Countdown. Ziel ist es permanent die Restzeit („Noch 50 Sekunden“, „Noch 49 Sekunden“ usw.) anzugezeigen.
Dazu erstellen wir eine Zahlvariable „TimeLeft“, die auf 60 (Sekunden) eingestellt ist und einen zweiten Timer names „Countdown“, bei deren Ablauf folgendes passieren soll: Ist „TimeLeft“ noch größer als 0, so wird die Restzeit in einer Message angezeigt, die sich jede Sekunden erneuert und damit die alte überlagert. Anschließend minimieren wir den Wert um einen Zähler.
Ist der Spieler nicht schnell genug und „TimeLeft“ erreicht den Wert 0 wird wie beim alten Timer die Booleanvariable „SatelliteReached“ auf „False“ gesetzt, der Misserfolg gemeldet und der Timer gestoppt.
Der letzte Schritt muss unbedingt im „On clicked“-Bereich erfolgen, da der Timer nur gestoppt werden kann, wenn er sich nicht in einem Verarbeitungsschritt befindet. Wie bereits im Anfängerkurs angesprochen stoppt der Programmablauf nicht, wenn die MessageBox erscheint. D.h. Im Hintergrund wird die „On elapsed“ Routine weiter abgearbeitet. Wenn der Spieler die Meldung mit OK bestätigt, ist die Routine beendet und der Timer kann gestoppt werden.
Abbildung 1: Der „Countdown“-Timer läuft jede Sekunde ab, zeigt die Restlaufzeit an und verringert den Wert anschließend |
Wenn wir Abb. 1 genauer betrachten, entdecken wir, dass der Timer auf Interval mit einer Laufzeit von einer Sekunde eingestellt ist. In diesem Modus startet der Timer immer wieder automatisch bis er explizit gestoppt. Das Ereignis „On start“ wird aber nur beim ersten Start ausgeführt.
Da durch die ständig erscheinende Message der Spieler die Zone „Satellitenstation“ nicht mehr auswählen kann, ist es wichtig dass er vor Erreichen des Labors weiß, wohin er laufen muss. Gegebenenfalls sollte man früh genug eine Wegbeschreibung („Laufe die Straße runter, dann rechts bis zum Baum“) anzeigen.
Um die Änderung wirksam werden zu lassen, ersetzen wir in der Labor- bzw. der Satellitenstationsannäherung beim „Start Timer“ / „Stop Timer“ Modul den „SatelliteLifeline“- durch den „Countdown“-Timer.
Abbildung 2: Beim Erreichen des Labors muss nun der Countdown-Timer gestartet werden | Abbildung 3: Auch in der Satellitenstation wurde der alte Timer durch unseren Countdown ersetzt |
Das urwigo Projekt zu diesem Tutorial als Download"