Markt Tutorial

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Markt Tutorial

      Wie erstelle ich einen Markt?
      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:

      GML-Quellcode

      1. global.a = 55;
      2. global.anzahl = 1;
      3. global.auswahl = 1;

      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

      1. {
      2. draw_sprite_ext(spr_select,1,57,global.a,2,1,0,c_blue,0.5); // global.a -> y-Koordinate vom Selektierbalken.
      3. draw_sprite_ext(spr_box,0,50,40,1,1,0,c_gray,0.8);
      4. }
      5. {
      6. draw_set_halign(fa_left);
      7. draw_set_color(c_white);
      8. {
      9. if global.auswahl = 1 then
      10. {
      11. io_clear();
      12. draw_text(300,50,'Produkt 1#Preis: 1€/stk.');
      13. }
      14. if global.auswahl = 2 then
      15. {
      16. io_clear();
      17. draw_text(300,50,'Produkt 2#Preis: 2€/stk.');
      18. }
      19. if global.auswahl = 3 then
      20. {
      21. io_clear();
      22. draw_text(300,50,'Produkt 3#Preis: 3€/stk.');
      23. }
      Alles anzeigen


      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:

      GML-Quellcode

      1. image_single = 0; // Wir wollen ja, dass das Sprite seine Animation nicht ausführt


      In das Left Pressed -Event:

      GML-Quellcode

      1. image_single = 1;
      2. if (global.auswahl < 3) then // Falls ihr Auswahlmöglichkeiten macht, müsst ihr die "3" anpassen
      3. { global.auswahl += 1;}


      Und in das Left Release -Event:

      GML-Quellcode

      1. image_single = 0;


      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:

      GML-Quellcode

      1. image_single = 1;
      2. if (global.auswahl > 1) then
      3. { global.auswahl -= 1;}


      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:

      GML-Quellcode

      1. image_single = 1
      2. global.anzahl +=1;


      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)

      Spoiler anzeigen

      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:

      GML-Quellcode

      1. ini_open('config.ini'); // öffnet die "config.ini"


      Als nächstes schreibt ihr ins "Enter"-Event:

      GML-Quellcode

      1. ini_write_real('player','geld',money);
      2. if global.auswahl = 1 then
      3. { ini_write_real('produkte','produkt1',global.anzahl);}
      4. if global.auswahl = 2 then
      5. { ini_write_real('produkte','produkt2',global.anzahl);}
      6. if global.auswahl = 3 then
      7. { ini_write_real('produkte','produkt3',global.anzahl);}


      Im "Game-End"-Event

      GML-Quellcode

      1. ini_close();


      Dann ergänzen wir noch im Markt-Controller im Draw-Event folgende Zeilen:

      GML-Quellcode

      1. draw_set_halign(fa_left);
      2. draw_set_font(fnt_standard);
      3. draw_text(60,55,'Produkt1');
      4. draw_text(60,70,'Produkt2');
      5. draw_text(60,85,'Produkt3');

      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:

      GML-Quellcode

      1. instance_create(300,300,obj_pfeilup);
      2. instance_create(300,320,obj_pfeildown);
      3. instance_create(350,300,obj_pfeilup2);
      4. instance_create(350,320,obj_pfeildown2);

      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
      Dateien
      • Example.zip

        (11,85 kB, 301 mal heruntergeladen, zuletzt: )
    • Benutzer online 1

      1 Besucher