Kategorien erstellen mit ds_list

    Kategorien erstellen mit ds_list

    Hallo,

    ich brauch eure hilfe ;)

    Ich möchte kotegorien erstellen können wie zb: Mathe, Deutsch, Sport... etc

    diesen kategorien müssen aber noch bestimmte informationen zugewiesen werden zb:

    Mathe ["1+3 = 4"], ["5+5 = 10"] ..............
    deutsch ["Genitiv ist.."], ["bla bla"].....
    usw...


    durch ds list erstlle ich die oberen kategorien, diese werden mir in einem drop down menü angezeigt, sind aber löschbar, da der name vom user bestimmt wird, durch zb get_string

    kann man irgendwie zu ds_lists auch sub_lists erstellen?

    das ganze soll zum lernen entwickelt werden, wo der user zu den erstellten themen seine perönlichen lernkarten erstellt...
    sowas wie :

    global.kategorien_name = get-string("","")
    string(global.kategorien_name) = ds_list_create();


    geht ja nicht.... also muss ich variabeln erst vordefinieren....
    das problem dabei ist dass ich die grids ja auslesen möchte, also die verschiedenen rows... ich möchte auch schauen ob zb [0,0] bis [0,100] inhalte hat, ich möchte genau wissen wie viele zeilen beschrieben sind und nicht die, die nur mit null gefüllt sind...
    Nehme doch ds_maps, denen du als Werte eine ds_list gibst.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
    sowas hier:

    GML-Quellcode

    1. categories = ds_map_create();
    2. categories[? "maths"] = ds_list_create();
    3. ds_list_add(categories[? "maths"], "1+1 = 2", "2+2 = 4");
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Husi012“ ()

    kann ich im nachhinein noch was adden? zb möchte ich maths auch noch "6+5 = 11" usw hinzufügen ... wie gesagt bis zu 1000 unterkategorien sollen zu der obersten kategorie hinzugefügt werden können...
    Ich kenn mich jetzt nicht mit der maximalen Größe einer ds_map aus, aber 1000 Items sind denke ich mal kein Problem.
    Weitere Dinge zu einer Kategorie nachträglich hinzufügen kannst du einfach mit:

    GML-Quellcode

    1. ds_map_add(categories[? "maths"], "6+5 = 11");
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
    oh ich verstehe das Problem, Husi scheint vergessen zu haben, das er "ds_list"s in die ds_map tun wollte, ist mir eben gar nicht aufgefallen

    GML-Quellcode

    1. //Liste aller Kategorien erstellen
    2. categories = ds_map_create();
    3. //Mathe als Kategorie einfügen
    4. categories[? "maths"] = ds_list_create();
    5. //die anfänglichen Beispielwerte
    6. ds_list_add(categories[? "maths"], "1+1 = 2", "2+2 = 4");
    7. //Nachträglich noch mehr einfügen
    8. ds_list_add(categories[? "maths"], "6+5 = 11");
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
    zu verständnis... ich mach in einer map eine sub_map-.....

    global.categories = ds_map_create();
    global.categories[? "Mathe"] = ds_map_create();

    in der categorie kommt eine weitere kategorie die "Mathe heißt"

    ds_map_add(global.categories[? "Mathe"], "bla", "2+2 = 4");

    in der kategorie, füge ich in der unterkategorie "Mathe" einen eintrag ein..... und jetzt meine frage: was soll der key? kann ich nicht:
    ds_map_add(global.categories[? "Mathe"], "2+2 = 4");
    ds_map_add(global.categories[? "Mathe"], "3463434");
    ds_map_add(global.categories[? "Mathe"], "blabla");


    machen?


    und wie frage ich dann ab, zb möchte ich die werte der jeweiligen unterkategorien, wenn ich die kategorie angetippt habe, zeichnen lassen..?
    Ups das muss ds_list heißen, nicht ds_map. War wohl etwas durchm Wind. Hab das mal im Post bearbeitet.
    Also du hast eine map, in der du jeweils eine Liste erstellst.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
    //Liste aller Kategorien erstellen
    global.categories = ds_map_create();
    //Mathe als Kategorie einfügen
    global.categories[? "Mathe"] = ds_list_create();
    global.categories[? "Deutsch"] = ds_list_create();
    global.categories[? "Russisch"] = ds_list_create();
    //die anfänglichen Beispielwerte
    ds_list_add(global.categories[? "Mathe"], "1+1 = 2", "2+2 = 4");
    //Nachträglich noch mehr einfügen
    ds_list_add(global.categories[? "Deutsch"], "wsgsagash");
    ds_list_add(global.categories[? "Deutsch"], "dsgdshdhd");
    ds_list_add(global.categories[? "Russisch"], "Kak to?");



    jetzt würde ich gerne die vorhandenen kategorien auslesen können, also dass ich zb in ner for schleife alle kategorien (Mathe, Deutsch,Russisch...) drawe

    und in den ds_list unterkategorien, wie komme ich da genau an die werte der liste? (oder lösche, ersetze etc?)



    danke schonmal jungs, sehr gut, genau das brauche ich...
    spontane Lösung...

    Du könntest "Mathe", "Russisch" usw als Zahl abspeichern und dann mit einer for loop von 0,1,2,3,4,5....100 loopen. Die Zahlen würden dann für einen String stehen.

    oder du erstellst parallel zu deiner map noch eine list in der du die Kategorien Strings speicherst. Dann könntst du durch die extra list loopen und die einträge der extra list als verweis für die map nehmen.

    Wenn ich morgen Zeit habe mache ich einmal ein Beispiel, da es glaube nicht ganz verständlich ist.
    Am einfachsten geht das mit den ds_map_find_* Funktionen. Beispiel aus der Hilfe:

    GML-Quellcode

    1. var size = ds_map_size(inventory) ;
    2. var first = ds_map_find_first(inventory);
    3. for (var i = 0; i < size; i++;)
    4.    {
    5.    if first != "gold"
    6.       {
    7.       first = ds_map_find_next(inventory, first);
    8.       }
    9.    else break;
    10.    }
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe