Schnelle schleifen

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

  • Schnelle schleifen

    Grrrr... also ich hab eine schleife bzw. das repet genommen das 500 mal ausgeführt wird. Bei jedem ausführen speichert er etwas in die ini datei ab und setz einen wert hoch. Aber irgendwie ist das fürs klo... denn die schleife ist echt langsam -.- gibts nicht eine schnellere schleife ?
  • RE: Schnelle schleifen

    du musst mal überlegen was du dem GM da zumutest:
    dein spiel läuft mit 30 frames per step, und in jedem step wird 500 mal etwas in eine texfile geschieben.
    das sind 15000 (30x500) zugriffe pro sekunde auf eine datei.
    ein solcher aufwand ist einfach zuviel (für fast jede engine)

    überleg dir genau, was du machen willst und ob es dafür nicht eine einfachere möglichkeit gibt. zum beispiel würde es deine schleife schon erheblich schneller machen, wenn du nicht jeden step, sonderen erst, wenn das ergebnis fest steht auf die file zugreifst.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • überleg dir genau, was du machen willst und ob es dafür nicht eine einfachere möglichkeit gibt. zum beispiel würde es deine schleife schon erheblich schneller machen, wenn du nicht jeden step, sonderen erst, wenn das ergebnis fest steht auf die file zugreifst.


    macht er ja nicht.. die schleife is ja nicht im step sondern bei create, also wenn das objekt erstellt ist.. d.h. er führt nur einmal diese schleife durch :-/
  • while:

    GML-Quellcode

    1. while(AUSRUCK)
    2. {
    3. CODE
    4. }

    Solange der AUSDRUCK true (wahr) ist, wird der CODE ausgeführt.
    wenn wir zb. diesen COde nehmen:

    GML-Quellcode

    1. i=0
    2. while(i<5)
    3. {
    4. show_message("Das while-statement ist gerade bei "+string(i)) // Nachricht anzeigen
    5. i+=1 // i um eins vergrößern
    6. }

    Wird 5mal die Nachricht angezeigt.
    Und zwar so:
    Das while-statement ist gerade bei 0
    Das while-statement ist gerade bei 1
    Das while-statement ist gerade bei 2
    Das while-statement ist gerade bei 3
    Das while-statement ist gerade bei 4


    Der Code wird solange ausgeführt bis "i" nicht kleiner als 5 ist.


    Das For-Statement ist schwerer zu erklären.
    Ich hoffe das du wenigstens das mit while verstanden hast, da ich ein sehr schlechter "Erklärer" bin ^^'
  • ok danke schonmal ;) .. mh hab nur noch eine frage..
    also als erstes will ich das er einen level bzw. nur koordinaten generiert (hab ich schon geschafft) und diese abspeichert in einer ini datei (hab ich auch geschafft) . Aber das ganze dauert zu lange... ca 29 sek für 400 planeten... also ich kann mir da nur an den kopf fassen... weil wenn ich das save game nehme das ja einfach alles abspeichert (sogar dsa was ich nich gebrauchen kann und mir hindernisse in den weg legt) dann geht das ratz fatz... dauert nichmal eine sekunde.. da frage ich mich, wie geht das ? :-/ please help...


    Edit / Nachtrag : Ok, ich hab einen Weg gefunden, nur leider weiss ich nicht wie ich das umsetzen soll. Unzwar speicher ich alles in ein array ab und dann wenn die schleife vorbei ist speichert er das als datei. Klingt einfach, aber ich hab kein schimmer wie ich das umsetzen soll. Also ich weiss nichteinmal wie ich das in ein array eintragen kann. Ich muss z.B. "x" koordinate und "y" koordinate eintragen ins array...... wie geht das ? und dann das anschließende speichern ? .... und dann noch eine andere frage... kann ich irgendwie eine liste erstellen wie bei einer ini datei und die nach dem loop einfach auf die festplatte (extern halt *g*) abspeichern ? wenn ihr versteht was ich meine..

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

  • Warum machst du die Ini Datei eigentlich 500 mal auf und kein einziges mal zu? Mach das Ini_open mal vor dem repeat und ein ini_close danach. Trotzdem ist das mit repeat und while gleichermaßen langsam, immerhin muss er 2000 Datensätze in einer dreisigstel Sekunde berechnen und schreiben.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum