Mit den Zeichenfunktionen des GameMakers sind viele Dinge möglich. Ein Beispiel dafür sind Aktienkurse. Vor allem in einer Wirtschaftssimulation kann man diese gut gebrauchen. Das nachfolgende Tutorial zeigt, wie das mit generierten Zufallswerten funktioniert.
Wir brauchen einen Font für die Beschriftung (fnt_beschr), ein Objekt (obj_aktientest) und einen Raum, den ich auf 1024*768 Größe eingestellt habe. Die zwei Relevanten Events im Objekt sind Create und Draw. Im Create generieren wir einen Kurs, den man sonst entweder aus einer Datenbank holt oder für ein Spiel am Start oder einem entsprechenden Startpunkt generiert.
Create-Event
1 2 3 4 5 6 7 8 9 10 11 | // Zufälliger Kurs kurs[0] = random_range(10, 35); // Startwert der Aktie // 70 Werte werden erstellt. for(i = 1; i < 71; i++) { kurs[i] = kurs[i-1] + random_range(-5, 5); if (kurs[i] < 1) { kurs[i] = 1; // Es gibt keine Werte kleiner als 1 } } |
Die Variable kurs[0] ist ein eindimensionales Array. Anders gesagt, eine Liste, die im Beispiel mit 70 zufälligen Werten gefüllt wird. Um diese Liste zu erstellen, brauchen wir die for-Schleife. Nachdem wir den ersten Wert (zwischen 10 und 35) erstellt haben, füllen wir die restliche Liste. Der nächste Wert weicht vom vorherigen Wert -5 bis +5 ab. Wenn der Wert kleiner ist als 1, wird er auf 1 gesetzt. Null oder negative Zahlen gibt es hier also nicht.
Nun haben wir unsere Werte, jetzt müssen wir diese auch zeichnen.
Draw-Event
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Gitternetz und Beschriftung draw_set_color(c_black); draw_set_font(fnt_beschr); draw_set_valign(fa_middle); draw_set_halign(fa_center); for (i = 0; i < 11; i++) { draw_line(30, 30 + i * 340 / 5, 710, 30 + i * 340 / 5); // horizontale Linien draw_line(30 + i * 340 / 5, 30, 30 + i * 340 / 5, 710); // vertikale Linien draw_text(730, 30 + i * 340 / 5, „" + string(100 - i * 10)); // Skala rechts draw_text(30 + i * 68, 735, i); // Wochen } // Aktienkurs zeichnen draw_set_color(c_red); for(i = 0; i < 70; i++) { draw_line_width(30 + i * 340 / 35, 710 - kurs[i] * 340 / 50, 30 + (i + 1) * 340 / 35, 710 - kurs[i + 1] * 340 / 50, 3); } |
Am Anfang zeichnen wir das Gitter und beschriften es mit Werten. Auch hierfür benutzen wir eine for-Schleife. Anschließend wird der Aktioenkurs in roter Farbe gezeichnet. mit draw_line_width zeichnen wir vom Ausgangspunkt bis Endpunkt mit einer Linienstärke von 3. i beginnt hier mit 0, im Create-Event war es 1, weil wir davor schon den Ausgangswert bestimmt haben. Wenn Du Dir genauer ansiehst, wie das Gitter gezeichnet wird, also die Koordinaten, dann verstehst Du auch, warum die Positionen x und y beim Kurs so komplex wirken. Wir müssen den Werten schließlich Positionen auf dem Bildschirm zuordnen. Wir beginne also bei 30 Pixeln und haben einen Abstand von 340. So werden Gitter und Aktionkurs jeweils versetzt.
Bedenke, dass wir das Gitter auf 10×10 Felder aufgeteilt haben, aber 70 Aktienwerte darauf verteilen.
Das Beispiel kannst Du selbst weiter verfeinern, indem Du aus den festen Werten Variable machst, die Du im Creat-Event definierst. So kannst Du den Aktienkurs in Zukunft noch viel besser steuern.
Aktienkurs