Wie erstellt man denn eine liste

  • GM 8

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

  • Wie erstellt man denn eine liste

    Hallo ich wollte ein kleines program schreiben bei den man eine liste hat in die man Werte einträgt mit den das program dann arbeitet und sie auch speichert und Laden kann.nur leider habe ich keine Ahnung wie das an besten geht , ich schätze mal mit draw Text nur etwas sichtbar machen wer wohl das leichteste den das mit den List Arrays und Maps war nicht so mein fall. Ich freue mich über jeden kleinen tip da ich als blutiger Anfänger vollkommen überfordert bin also Wutanfall mir jedes Code Stück oder link nur helfen also vielen danke für jeden noch so kleinen Hinweis und dank auch für eure rücksicht mit meiner Grammatik :D
  • Was du brauchst sind Data Structure Lists, ob du willst oder nicht^^
    Sie sind eigentlich ganz einfach zu verwenden. Du kannst sie auch ganz einfach in eine Datei speichern und wieder laden. Um sie dann noch zu drawen müsstest du z.B. per for-Schleife die Liste durchgehen und die Einträge mit draw_text drawn.


    PS: Wäre schön, wenn du mal lernen würdest, wie man Deutsch schreibt und sinnvolle Sätze bildet.
  • Der Game Maker besitzt Datenstrukturen, also Maps, Grids und Listen. In diese Listen kann man Strings und Reals und begrentz speichern und wieder entfernen.
    Beispiel:

    GML-Quellcode

    1. liste=ds_list_create();
    2. ds_list_add(liste, "hallo");
    3. ds_list_add(liste, 42);


    Sprich du erstellst erst eine Liste und dann kannst du Werte hinzufügen. Mit Hilfe von draw_text und den File Funktionen kann man das dann drawen oder speichern/laden.

    Nehmen wir an du hast nun deine Liste, da stehen nun die Werte drin, jedoch soll nun das ganze auf den Bildschirm:

    GML-Quellcode

    1. var str;
    2. str=""; //string Variable in dem die ganzen Werte kommen sollen
    3. for (i=0;i<ds_list_size(liste);i+=1) {
    4. str+=string(ds_list_find_value(liste, i))+"#"; //string() für mögliche real Werte in der Liste; # für Zeilenumbruch
    5. }
    6. draw_text(0, 0, str); //drawen
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Vielen dank für die schnelle Antwort, ich bin froh das ihr mir helft.

    Nur leider habe ich mich da etwas ungünstig ausgedrückt mit dem Wort Liste, eigentlich möchte ich eine Tabelle.

    z. B.

    Nummer| Name |Preis |Hersteller |Inhaltsstoffe| Bild


    Die man nach allen Spalten sortieren kann (ABC, Preis, Inhaltsstoffe) hilft mir da "ds list" denn weiter und noch eine dümmere Frage sollte ich das als ein Script machen oder ein obj im Raum.

    PS: ein Beispiel oder ein Tutorial wer gut, da das Thema mir als Anfänger noch deutlich zu hoch ist.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Bin Doch Neu ()

  • famous schrieb:

    Dazu brächtest du Strukturen die der GM doofiger weise nicht unterstützt.
    Also so ganz stimmt das doch nicht. Der GM besitzt sehr wohl eine Datenstruktur dafür und die nennt sich ds_grid.

    Eigentlich ist das genau das was du brauchst, eine Tabelle.
    Darin kannst du schön deine Daten in Spalten und Zeilen einordnen. Schau dir dazu die Hilfe an. Leider hat der GM allerdings keine Funktionen um sowas automatisch zu sortieren. Ein Skript kann da aber helfen:
    gmc.yoyogames.com/index.php?sh…4&view=findpost&p=2912974 (<-- nicht von mir getestet...)

    Allerdings bin ich mir nicht so ganz sicher ob du all das verstehen wirst :/ Versuchs aber zumindest :)
    Als Anfangstipp: mit ds_grid_set kannst du Werte oder Strings einsetzen und mit ds_grid_get wieder auslesen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

  • Danke aber noch will etwas bei der lite bleiben

    Ich bin nur leider nicht ganz klar darüber wie man 2-dimensional Arrys macht 1-dimensional ist ja ok aber wie geht das mit 2

    bei 1 macht man das ja so
    text[1] = "999";
    text[2] = "888";
    text[3] = "777";
    text[4] = "666";
    text[5] = "555";
    text[6] = "444";
    text[7] = "333";
    text[8] = "222";
    text[9] = "111";
    text[10] = "000";
    for(i=1;i<=10;i+=1){draw_text(x,y-20+i*20,string(text))}
  • Oh das geht so:

    GML-Quellcode

    1. text[1,0] = "99";
    2. text[1,1] = "88";
    3. text[1,2] = "77";
    4. text[2,0] = "999";
    5. text[2,1] = "888";
    6. text[2,2] = "777";

    Übrigens kannst du auch die Null verwenden. Der Game Maker versteht in sehr vielen Fällen die Zahl 0 als das erste Element von was auch immer.

    EDIT: @famous: Wie er bereits mehrmals erwähnt hat, besitzt er die Lite Version des Game Makers. Die unterstützt keinerlei Datenstrukturen außer arrays...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • cool aber wie geht das man kann doch nur einen index auf jederzahl haben.

    Irgendwie verstehe ich nur Bahnhof und danke das ihr euch so viel mühe gebt

    derarray[0,0]
    derarray[0,1]
    derarray[0,2]
    derarray[0,3]
    derarray[1,0]
    derarray[1,1]
    aber das verstehe ich nicht 0,0 wie dann bezieht es sich doch auf sich selbst oder? Und muss ich den code veränder damit er das Drawen kann.
  • Also am einfachsten ist es wenn man sich die Klammern _im Kopf_ einfach wegdenkt:

    Dann ist das hier eine Variable:
    derarray00
    und die hier ist auch eine:
    derarray94
    usw..


    Somit kann man das Array exakt wie eine Vielzahl von Variablen verwenden :)
    Natürlich müssen die Klammern drin sein und man kann anstelle der Zahl auch eine Variable verwenden.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Oh genial danke das geht auch mit Variable

    Cool :thumbsup: auch wenn mir der unterschied von 1D zu 2D unklar ist

    doch das war echt hilfreich nur mit einer andren draw sache die das sortiren vieleichtmöglich macht. und warum geht es nicht so

    var b;
    b=tex[2];
    text[1] = b;
    text[2] = "1000000";
    text[3] = "777";
    text[4] = "666";
    text[5] = "555";
    text[6] = "444";
    text[7] = "333";
    text[8] = "222";
    text[9] = "111";
    text[10] = "000";

    tex[1] = 22
    tex[2] = "1000000";
    tex[3] = "777";

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Bin Doch Neu ()

  • Man kann arrays nicht mit einer Taste festlesen... Hast du denn die Hilfe gelesen? o:
    Ein array mit einem anderen zu verbinden geht im Game Maker leider nicht. Aber wofür brauchst du das? Das 2Dimensionale Array stellt bereits eine Tabelle dar.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Da mitd er Hilfe hast du recht..

    Aber, sorry ich verstehs nicht so ganz. Ein 2D - Array hat zwei Dimensionen! Ist also ein Gitter und somit eine Tabelle mit beliebig vielen Spalten sowie Zeilen!

    Und du musst wohl doer übel alles durch code eintragen (wie in den Beispielen die wir dir mehrfach gezeigt haben).
    Wenn du davon redest dass man das ganze Array in eienr Datei speichern können soll.. ja dann ist das ganze "noch" komplizierter. Denn du musst dich selber darum kümmern dass die Daten in eine Datei geschrieben werden sowie dass sie ausgelesen werden.

    Wie gesagt, der GM ist das falsche Programm für das was du machen willst. Nimm das Tabellenkalkulationsprogramm von Open Office... Oder erkläre genauer was du am Ende haben willst.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Na wie famous sagte

    derarray[0,0]

    dann kannst du also..

    derarray[0,0]
    derarray[0,1]
    derarray[0,2]
    derarray[0,3]
    derarray[1,0]
    derarray[1,1]
    usw

    Mir ist aber aufgefallen das man im GameMaker Strukturen simulieren kann. Du erstellst eine liste, und den einen Wert den du pro Eintrag setzen kannst ist die Adresse einer weiteren Liste. So können sie unbegrenzt verschachtelt werden.
    wie kann man die id lesen wie schreibt mann das dennn

    ich habs mal so versuch war wohl blöd.
    var b;
    b=tex[2];
    text[1] = b;
    text[2] = "1000000";
    text[3] = "777";
    text[4] = "666";
    text[5] = "555";
    text[6] = "444";
    text[7] = "333";
    text[8] = "222";
    text[9] = "111";
    text[10] = "000";

    tex[1] = 22
    tex[2] = "1000000";
    tex[3] = "777";


    und der Arry ist doch keine Tabelle er hat doch nur eine Spalte die immer weiter runter geht und auch nur, wenn ich festlege wieviele spalten es gibt
    oder kann man mehr strings und co hinter einen scheiben sowas wie
    tex[1] = "22 ,test,test"
    tex[2] = "1000000" test test;
    tex[3] = "777";

    also mit abstand wie bei eier Tabelle