Highscore mit ds_list

  • GM 7

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

  • Highscore mit ds_list

    Hi, hab schon im Tut archiv und in der Suche geschaut aber nichts gefunden und mit der Hilfe versteh ich das nicht.

    Hab versucht mir mal ne eigene Highscoreliste zu programmieren, aber das ds_list_size hat zum Beispiel gar nicht funktioniert, da kam der Fehler:

    Quellcode

    1. ___________________________________________
    2. ERROR in
    3. action number 1
    4. of Create Event
    5. for object obj_list:
    6. Data structure with index does not exist.



    und wie kann man diese Liste anzeigen, dazu findet man auch nichts in der Hilfe, nur wie man Werte einfügt und so, kann mir jemand helfen, ne Highscoreliste zu programmieren, hab keine Ahnung wie das funktioniert. Probier schon die ganze Zeit rum, aber komm nicht weiter.
    Gruß Gamer
  • Data structure with index does not exist.
    Das heißt auf deutsch: Die datastrucktur gibt es noch nicht!

    Du musst diese ert ein mal erstellen, mit ds_list_create() (glaub ich). Diese funktion gibt den index wieder. Den speichert man dan in eine variable, und benutzt diese dann immer als index, also:

    GML-Quellcode

    1. index=ds_list_create();
    2. ds_list_size(index);

    oder du hasst dich einfach irgendwo verschrieben :P
  • Der Fehler sagt mir nur, dass du keine Liste an die Funktion übergeben hast. Du musst zuerst eine Liste erstellen (am besten im Create Event deines Objektes)
    highscoreList=ds_list_create();

    Wenn du danach ds_list_size(highscoreList) aufrufst, sollte kein Fehler mehr kommen.

    2 Hauptprobleme sehe ich beim Verwenden von Listen.

    1. Du willst wahrscheinlich zwei Werte in deiner Highscoreliste haben: Name und Score. Die Liste kann aber nur einen Wert pro Index enthalten. Du wirst deshalb wahrscheinlich 2 Listen verwenden oder Objekte in der Liste speichern müssen. Außerdem benötigst du deine eigene Sortierfunktion.

    2. Listen werden nicht automatisch mit dem Spiel mitgespeichert. Du musst dir deshalb selbst eine Möglichkeit ausdenken, sie in eine Datei zu schreiben.

    Das Darstellen wiederum sollte mit einer einfach For-Schleife kein Problem sein.

    GML-Quellcode

    1. for (i=0;i<ds_list_size(highscoreList);i+=1) {
    2. draw_text(x,y+15*i,string(ds_list_find_value(highscoreList,i));
    3. }
  • also englisch kann ich selber und deshalb wusst ich was das bedeutet aber ich hatte im create event erst das ds_list_create und dann das ds_list_size und da hab ich den Wert 10 genommen, weil es eine Top10 Highscore Tabelle werden soll, war das falsch so?

    edit: achso da muss der name rein aber wie änder ich dann die größe der liste???
    Gruß Gamer
  • Du steckst einfach 10 Elemente in die Liste mit ds_list_add(id,val).

    Einfaches: Beispiel:
    Create Event:

    GML-Quellcode

    1. liste=ds_list_create(); //erstellt die Liste
    2. for (i=0;i<10;i+=1)
    3. {
    4. ds_list_add(liste,0); //Füllt die Liste mit 10 Nullen
    5. }

    Draw Event:

    GML-Quellcode

    1. for (i=0;i<10;i+=1) {
    2. draw_text(x,y+15*i,string(ds_list_find_value(liste,i))); // zeichnet die ersten 10 Elemente der Liste untereinander
    3. }


    Keyboard Pressed Event <space>:

    GML-Quellcode

    1. zahl=get_integer("Gib eine Zahl ein",10); // Öffnet ein Fenster, in dem man testweise eine Zahl eingeben kann
    2. ds_list_add(liste,zahl); // Fügt die Zahl in die Liste
    3. ds_list_sort(liste,false); // Sortiert die Liste absteigend