StartTutorialsGame MakerDie Switch-Anweisung

Die Switch-Anweisung

  • 2 Monaten her
  • 3Minuten

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.

Sven Gramatke//www.gravitationart.com/
Schreibt gelegentlich Artikel. Schwerpunkte sind Gamedesign, Programmierung (GML, PHP und JS), Retro und Berichte.

3 Kommentare

Abonnieren
Benachrichtige mich bei
guest
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

NEWS

ByteGame News

Gamedev Podcast 52 – Game Therapy

0
Wer in den letzten 20 Jahren eine deutsche Tagesklinik schon mal von innen gesehen hat, kennt vielleicht Cogpack. Bei Cogpack kann man am PC...
GameJam-Logo von ManaSoup-GameJam (irgendwas mit Pizza)

Manasoup GameJam

0
Die drei-tägige Manasoup GameJam startet am Freitag, den 03.12.2021! Bei dieser deutschsprachigen GameJam der Gamedev-Discord-Community Manasoup-Network (in Kooperation mit Game Dev Podcast und dem Magazin...
ByteGame News

Multiplayer in Godot 4.0

0
Im Godot-Blog gibt es nun einen Beitrag über das neue Multiplayer-Replikationssystem, das für Godot 4.0 entwickelt wird. Darin werden die Konzepte vorgestellt, auf deren...

Echtzeit-Charakteranimationsschulung in der Unreal Engine

0
Animationen sind ein wichtiger Bestandteil jeder Storyline. Neben der Vielzahl von Objekten, die man in der Unreal Engine animieren kann - Charaktere, Objekte, Materialien...
ByteGame News

Rudi ist der beste Spürhund!

0
Bei A Swift's Live 2 - The Journey hat der Hund Rudi eine Schnüffel-Fortbildung genossen und kann nun besser schnüffeln denn je. Als Resultat...
3
0
Would love your thoughts, please comment.x
()
x