Über Zufallszahlen und die verschiedenen Möglichkeiten gab es hier bereits einige Tutorials. Doch manchmal existieren Sonderfälle, für die es im GameMaker eine einfache Lösung gibt.
Was ist choose?
Wörtlich übersetzt heißt es „wählen”. Im Kern geht es um nichts anderes. Die Funktion wählt zufällig zwischen vorgegebenen Parametern aus. Die Verwendung ist dabei sehr einfach. Hier ein Beispiel:
1 2 | randomise(); names = choose("Maria", „Anna", „Claudia", „Tanja", „Beate"); |
Wie immer, wenn wir mit Zufallsgeneratoren im GameMaker arbeiten, brauchen wir randomise(). Wenn wir das nicht starten, erhalten wir beim Spielstart immer den selben Wert.
Anschließend definieren wir eine Variable, in diesem Fall names. Dahinter kommt auch schon die Funktion, in diesem Fall mit fünf weiblichen Namen gefüllt.
Wichtig: Strings werden natürlich in Anführungszeichen geschrieben.
Die Variable kann jetzt beliebig verwendet werden. Sie enthält eine der fünf Namen.
Alternative zu Switch
In vielen Fällen kann man auf Switch verzichten. Vor allem, wenn wir nur einen Parameter haben. Zur Verwendung empfehlen wir choose möglichst nur dann zu benutzen, wenn es wirklich nur einen Parameter gibt oder bewusst mehrere gewürfelt werden sollen. Etwa Namen und Farben. Mehrere Parameter mit einem Zusammenhang sind hingegen zu vermeiden. Hier ist eine Switch deutlich besser. Je nach Komplexität könnte man es auch mit Arrays lösen. Im Array definiert man die Parameter und würfelt die einzelnen Arrays aus. Etwa so:
1 2 3 4 5 6 7 8 9 | ; person2 = ["Luna", „45", „159", „grün"]; person3 = ["Adnana", „33", „177", „braun"]; person = choose(person1, person2, person3);</pre]person1 = ["Greta", „21", „168", „blau"]; person2 = ["Luna", „45", „159", „grün"]; person3 = ["Adnana", „33", „177", „braun"]; person = choose(person1, person2, person3); |
Und dann im Draw-Event:
1 2 3 4 5 6 7 | ); draw="text(64," 96, „Alter: „ + person[1]); draw="text(64," 128, „Größe: „ + person[2] + „ cm ); draw_text(64, 160, „Augenfarbe: „ + person[3]);</pre]draw_text(64, 64, „Name: „ + person[0]); draw_text(64, 96, „Alter: „ + person[1]); draw_text(64, 128, „Größe: „ + person[2] + „ cm"); draw_text(64, 160, „Augenfarbe: „ + person[3]); |
Resultat:
Anwendungsbeispiele
Die GameMaker-Hilfe zeigt bereits die Beispiele Namen, Sprites und Zahlen. Die Farben wurden schon genannt. Beispiel:
1 | color = choose(c_white, c_blue, c_green); |
In Kombination mit dem ersten Code kann bspw. im Draw-Event „Claudia” in der Farbe Grün angezeigt werden.
Aber zurück zu den Zahlen. Oft hat man den Fall, dass nur aus ganz bestimmten Zahlen gewählt werden soll. Etwa 1, 2, 5 und 8. Hierfür ist choose perfekt.
Objekte kommen ebenfalls in Frage. An einer bestimmten Stelle im Level soll zufällig einer von drei möglichen Gegnern erscheinen? Kein Problem.
Oder dieses Beispiel:
1 2 3 4 5 6 7 | welcoming = choose( "Na, du alte Bratwurst?", "Hallo und herzlich willkommen!", "Wird Zeit, dass wir anfangen...", "Hallo? Ist da jemand?", "Es geht noch nicht los und ich langweile mich bereits." ); |
Im Draw-Event ausgegeben sieht es dann so aus:
Das heißt, man kann auch das Problem mit längeren, zufälligen Texten, bspw. eines NPCs, damit lösen.
Fazit
In einigen speziellen Fällen ist choose() eine deutliche Erleichterung und bietet viele tolle Anwendungsmöglichkeiten. Einfach mal selbst probieren.