Die Switch-Anweisung

21. Oktober 2016

Bei der if-Anweisung haben wir gelernt, wie wir bestimmte Bedingungen unterscheiden und entsprechende Befehle ausgeben können. Es gibt aber auch fälle, bei denen if-Anweisungen viel zu kompliziert wären. Hier hilft oft die Switch-Anweisung.

Nehmen wir an, wir hätten ein Strategiespiel, einen Manager oder eine Wirtschaftssimulation, bei der es wichtig ist, dass der aktuelle Monat angezeigt wird. Außerdem hat nicht jeder Monat den selben Tag, also müssen wir wissen, welchen Monat wir haben um den entsprechenden Namen auszugeben und die korrekte Anzahl der Tage zu berücksichtigen.

Das Jahr hat bekanntlich 12 Monate. Nun könnten wir hin gehen, und dieses Problem mit if-Anweisungen lösen. Der Anfang würde dann so aussehen:

 

 

Wir bemerken dabei drei Probleme. Erstens, dass wir Glück haben, nur Monate zu unterscheiden und nicht gleich alle 365 Tage. Wenn dem so wäre, könnte man die Abfragen nicht mehr handhaben, was die zweite Feststellung ist und sofort zur dritten führt. Mit jedem weiteren if wird der Code immer komplexer und es braucht nicht viel Fantasie um zu merken, dass es für die Performance nicht unbedingt gut ist. Warum? Wenn wir den Januar haben, muss der Computer dennoch alle 12 Abfragen bearbeiten. Wenn wir das vermeiden wollen, müssen wir alles mit if-else verschachteln. Spätestens beim Juni wird der eine oder andere Programmierer den Code in die Tonne treten und dieses Feature aus dem Spiel streichen.

Das ist nicht notwendig! Mit switch kann man das elegant lösen. Mit switch fragen wir einen Wert ab. Der kann eine Zahl oder eine Zeichenkette sein. Dann rattert der Computer eine Liste ab, bis es gefunden wurde und führt die Anweisungen aus. Bis hierhin ist es noch kein großer Unterschied zu if. Der wesentliche Unterschied ist: bei switch kann man abbrechen, sobald das Richtige gefunden wurde. Der Rest wird nicht mehr bearbeitet. Für den Computer ist damit der Januar sehr entspannt und der Dezember nicht stressiger, als bei der if-Lösung. Und dazu ist es auch noch viel übersichtlicher.

Aufbau

 

 

Nach switch folgt in der runden Klammer die Variable, die geprüft wird. Bei jedem case wird ein möglicher Wert / Zustand abgefragt. Wenn der stimmt, folgen Anweisungen darunter. Sobald diese Anweisungen erfolgt sind, kommt ein break. Ist case richtig, bricht switch beim nächsten break ab. Wenn also wert1 richtig ist, wird wert2 nicht mehr geprüft. Auch wenn darunter 100 weitere Werte folgen, passiert mit denen nichts mehr.

Auch am Aufbau merkt man, wie einfach dieser ist. Wir haben viel weniger Klammern und können uns so auf das Wesentliche konzentrieren.

Was ist aber, wenn kein Wert zutrifft? Dafür gibt es default, den man an das Ende setzt. Was nach default kommt, wird nur dann ausgeführt, wenn kein Wert zutrifft.

 

 

In dem Fall würde eine Nachricht kommen, wenn ein Wert kommt, der weder wert1 noch wert2 entspricht.

Die Monate

Jetzt schauen wir uns einmal an, wie das beim eingangs erwähnten Beispiel funktioniert. Da es ausgeschlossen ist, dass es einen Wert kleiner 1 und größer 12 geben wird, habe ich den default-Fall weggelassen.

 

 

Wenn wir das im Step-Event haben, können wir die richtigen Variablen für das Umschalten der Tage verwenden und den korrekten Namen auf dem Bildschirm ausgeben.

Die switch-Anweisung wird noch in mehreren Tutorials verwendet. Das angehängte Beispiel zeigt den Monat. Mit Plus und Minus auf dem Nummernblock kann man die Monate hoch und runter schalten.

 

Hat Dir dieser Artikel gefallen? Dann würden wir uns sehr über Unterstützung freuen.

3
Hinterlasse einen Kommentar

avatar
1024
3 Kommentar Themen
0 Themen Antworten
0 Follower
 
Kommentar, auf das am meisten reagiert wurde
Beliebtestes Kommentar Thema
0 Kommentatoren
Skipper - Ein Spiel mit vielen Zufallselementen | Byte GameMaker MagazinDrag&Drop vs GML – Byte GameMaker MagazinArbeiten mit Zufallszahlen – Byte GameMaker Magazin Letzte Kommentartoren
  Abonnieren  
neueste älteste meiste Bewertungen
Benachrichtige mich bei
trackback

[…] Bot-Namen aus einer Liste wählen. Es wäre dabei hilfreich, wenn Du Dich bereits mit der switch-Anweisung auskennen […]

trackback

[…] Die Switch-Anweisung […]

trackback

[…] nach Level gibt es eine andere Fallgeschwindigkeit der Springer. Die Geschwindigkeit wird mit einer switch […]