Wie erstelle ich einen Markt?
Von HHDS
Von HHDS
Hallo liebe Community!
In diesem Tutorial erkläre ich euch, wie ihr einen Markt, ungefähr der, wie bei Pokémon, erstellt. Dazu ist eine registrierte Version des GM 6.x oder der Pro Edition des GM 7 nötig, weil wir Alpha-Transparenzen verwenden werden. Auch solltet ihr einige Erfahrungen mit INI-Dateien haben.
Also, los geht’s.
Zunächst brauchen wir einige Grafiken. Zum Beispiel die:
Der blaue Balken ist der „Selektierbalken“, der Kasten das „Menü“ und die beiden Pfeile sind Auswahlpfeile. Alle fügen wir als Grafik in unser Projekt ein. Als nächstes, erstellen wir ein Objekt, das wir "obj_markt_controller" nennen. Ins Create-Event schreiben wir:
Was das bedeuten soll, braucht ihr euch jetzt noch keine Sorgen zu machen. Dieser Code setzt nur einige Variablen, die wir gleich benötigen.
Im Draw-Event des Objektes schreiben wir:
GML-Quellcode
- {
- draw_sprite_ext(spr_select,1,57,global.a,2,1,0,c_blue,0.5); // global.a -> y-Koordinate vom Selektierbalken.
- draw_sprite_ext(spr_box,0,50,40,1,1,0,c_gray,0.8);
- }
- {
- draw_set_halign(fa_left);
- draw_set_color(c_white);
- {
- if global.auswahl = 1 then
- {
- io_clear();
- draw_text(300,50,'Produkt 1#Preis: 1€/stk.');
- }
- if global.auswahl = 2 then
- {
- io_clear();
- draw_text(300,50,'Produkt 2#Preis: 2€/stk.');
- }
- if global.auswahl = 3 then
- {
- io_clear();
- draw_text(300,50,'Produkt 3#Preis: 3€/stk.');
- }
Ich erkäre mal, was hier passiert: Zuerst zeichnet er den "Selectbalken", skaliert ihn x-basierend um 2 umd setzt die Transparenz auf 0.5. Die Variable global.a ersetzt die y-Koordinate des Sprites, weil ja wollen, dass sich der Balken später nach oben oder nach unten bewegt.
Als Zweites, zeichnet er die Box, also das Menü, und setzt die Transparenz auf 0.8.
Dann setzt er die Textausrichtung nach links und die Schriftfarbe auf Weiss.
Als dritten Schritt fragt er ab, ob global.auswahl auf 1 ist. Wenn ja, dann "säubert" er den Bildschirm und gibt den Produktnamen und den Preis aus.
OK, soweit so gut. Jetzt erstellen wir noch ein Objekt, das wir obj_pfeil_up nennen, geben ihm die spr_pf_auswahl_up -Grafik und schreiben ins Create-Event:
In das Left Pressed -Event:
Und in das Left Release -Event:
Das nächste Objekt ist das Objekt obj_pfeil_down.
Dort machen wir dasselbe, wie in dem Objekt über uns, nur das wir im Left Pressed -Event folgendes schreiben:
Diese Objekte sind für die Verschiebungen des "Selectbalkens" da.
Für die beiden anderen Pfeile machen wir nichts anderes als:
2 Objekte erstellen: obj_pfeil2_up und obj_pfeil2_down
Ihnen die zugehörige Grafik geben: spr_pf_anzahl_up und -down,
Ihnen als Parent jeweils das obj_pfeil_up bzw. obj_pfeil_down zuzuweisen. Das erspart uns nämlich zusätzliche Arbeit.
Aber ins Left-Pressed schreiben:
Und dann die Drag & Drop Funktion "Call Event" im Controllregisterreiter aufzurufen.
Alles klar? Nein? Keine Sorge, das "Schlimmste" haben wir jetzt überstanden. Obwohl, noch nicht ganz.
(Falls ihr die Werte abspeichern wollt, könnt ihr ja den Spoiler öffnen)
Als Alternative erstellen wir die INI-Datei. Ich gehe mal davon aus, das ihr wisst, wie es geht.
Für die, die das noch nicht gemacht haben:
- Windows-Editor öffnen.
- Dort schreibt ihr NICHTS rein, sondern speichert sie ab unter dem Dateinamen "config.ini"
- Wichtig ist, dass sie sich in dem Verzeichnis befindet, indem euer Projekt ist. Ansonsten könntet ihr Probleme bekommen.
Dann geht ihr nochmal in den Markt-Controller und schreibt ins "Game Start"-Event:
Als nächstes schreibt ihr ins "Enter"-Event:
GML-Quellcode
Im "Game-End"-Event
Dann ergänzen wir noch im Markt-Controller im Draw-Event folgende Zeilen:
Wie man dem Code entnehmen kann, benötigen wir noch eine Font. Einfach Add Font -> Schriftart "Arial" und Schriftgröße: 12.
Name: fnt_standard
Im Create-Event des selben Objektes ergänzen wir noch:
Dieser Code erstellt die Pfeile.
Ok, ich hoffe, dieses Tutorial ist vollständig aufgeführt, denn ich versuche immer, alles perfekt zu machen, auch, wenn ich es zu ersten mal mache. Dadurch arbeite ich nur noch wuschiger. Aber das Example ist vollständig ;). Falls jemand eine Unvollständigkeit entdeckt bzw. einen Fehler, darf er ihn gerne posten. Auch nehme ich gerne Kritik und Verbesserungsvorschläge gerne an. Naja, ok, ähm, die Grafiken sind in der gm6 zu finden. Bis dahin
HHDS