Listen- bzw. Random-Problem

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

  • Listen- bzw. Random-Problem

    Hallo,

    Da ich gerade ersteinmal mit GML angefangen habe, habe ich mir vorgenommen Eure Ratschläge zu beherzigen und klein anzufangen. Irgendwann einmal, wenn ich aus der Anfangsphase heraus bin würde es mich reizen ein rundenbasiertes Weltraumstrategiespiel zu entwickeln. Keine Sorge - ich bleibe auf dem Teppich und weiß, daß das noch ein langer holpriger Weg ist. Deshalb habe ich mir gedacht - fang klein an und versuch ersteinmal ein paar Teilaspekte von solch einem Spiel zu erstellen. Die dabei gesammelten Erfahrungen werden später sicherlich nützlich sein.
    Deshalb habe ich mich heute an einer Art Zufallskartengenerator in GML versucht.
    Ziel des ganzen ist folgendes. Auf einer leeren Karte sollen eine gewisse Anzahl vom Spieler zu bestimmende Objekte (später einmal Sterne) an zufälligen Stellen positioniert werden.
    Die X- und Y-Koordinaten der Objekte sollen in einer Liste gespeichert werden. Soweit so gut. Um zu überprüfen, daß auch wirklich Daten in die Liste gepackt werden, dachte ich mir - speicher ich sie in eine Datei, damit ich sie mir anschauen kann. Nebenbei lerne ich dann noch den Umgang mit Dateien (Dank Windapple´s Tutorial für GML-Anfänger).

    Also habe ich folgendes getan:
    Ich habe einen Raum mit einem netten Hintergrund erstellt und in diesen ein Kontrollobjekt eingefügt, welches das Ganze steuern soll.
    in dem Kontrollobjekt habe ich einmal folgenden Code der bei Spielbeginn ausgeführt wird:

    GML-Quellcode

    1. //Zufallskartengenerator mittels Koordinatenliste
    2. {
    3. var anzahl,zaehler;
    4. anzahl = 0
    5. zaehler = 0
    6. anzahl = get_integer("Wieviele Objekte sollen erstellt werden?",10); //Nachfrage Objektanzahl
    7. global.stats = ds_list_create(); //Listenerstellung
    8. while (anzahl <= zaehler)
    9. {
    10. ds_list_add(global.stats, floor(random(1240)+20)); // 0 = X1 = erste X-Koordinate
    11. ds_list_add(global.stats, floor(random(984)+20)); // 1 = Y1 = erste Y-Koordinate
    12. zaehler = zaehler+1
    13. }
    14. }
    Alles anzeigen


    Und einmal diesen Code in einem Key-Press-event um die daten aus der Liste zu speichern:

    GML-Quellcode

    1. //Listendaten in Datei speichern
    2. //ds_list_find_value(ds,position);
    3. {
    4. var file, text;
    5. file = file_text_open_write("usertext.txt"); //die Datei öffnen
    6. file_text_write_real(file,ds_list_find_value(global.stats,0));
    7. file_text_writeln(file);
    8. file_text_write_real(file,ds_list_find_value(global.stats,1));
    9. file_text_writeln(file);
    10. file_text_write_real(file,ds_list_find_value(global.stats,2));
    11. file_text_writeln(file);
    12. file_text_write_real(file,ds_list_find_value(global.stats,3));
    13. file_text_writeln(file);
    14. file_text_write_real(file,ds_list_find_value(global.stats,4));
    15. file_text_writeln(file);
    16. file_text_write_real(file,ds_list_find_value(global.stats,5));
    17. file_text_writeln(file);
    18. file_text_write_real(file,ds_list_find_value(global.stats,6));
    19. file_text_writeln(file);
    20. file_text_write_real(file,ds_list_find_value(global.stats,7));
    21. file_text_writeln(file);
    22. file_text_write_real(file,ds_list_find_value(global.stats,8));
    23. file_text_writeln(file);
    24. file_text_write_real(file,ds_list_find_value(global.stats,9));
    25. file_text_writeln(file);
    26. file_text_close(file); //die Datei wieder schließen; das nicht vergessen!
    27. }
    Alles anzeigen


    Das ganze läuft auch ohne Fehlermeldung. Ich weiß, daß die Art wie ich die 10 Werte in die datei speicher sicherlich umständlich ist, aber es geht ja im Moment nur ums Prinzip. ;)
    Leider steht in der datei immer nur folgendes:
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000
    0,0000

    Daher Vermute ich, daß irgendwo bei der zufälligen Koordinatenerstellung etwas nicht stimmt. Ich habe auch mal die Rundung floor weg genommen - macht aber keinen Unterschied.

    Wer hat eine Idee woran es liegen könnte? Vielen Dank im Voraus.

    P.S. Bei der Programmausführung einfach nur auf OK bei der Abfrage klicken, da das Speichern in die Datei für 10 Werte ausgelegt ist. ;)

    Edit: Nicht wundern - es ist noch nichts enthalten, was wirklich Objekte platziert. das kommt im nächsten Schritt und soll die Daten aus der Liste als X und Y-Koordinaten verwenden.
    Dateien
    • Map_List.zip

      (45,98 kB, 89 mal heruntergeladen, zuletzt: )
    Viele Grüße.
    UPUAUT

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Upuaut ()

  • Probiers mal mit

    GML-Quellcode

    1. while (anzahl >= zaehler)

    statt

    GML-Quellcode

    1. while (anzahl <= zaehler)


    bei dir wird nämlich abgefragt, ob die anzahl kleiner oder gleich ist, wie der zähler. Und das trifft NIE zu! ;)
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage

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

  • Hallo Firecool,

    Vielen Dank - das war es. Jetzt gehts. :)

    Da wäre ich nie drauf gekommen. Ich dachte ich hätte da irgendwas mit random oder der Liste falsch gemacht, da das ja für einen Anfänger wie mich recht komplex ist - aber einfach nur sowas...

    Sag bloß das hast Du beim ersten Blick sofort gesehen?
    Ich hab da jetzt sicherlich schon eine Stunde vor gesessen und nichts gefunden. lol
    Viele Grüße.
    UPUAUT
  • Benutzer online 1

    1 Besucher