Code Vereinfachung

  • GM 8

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

  • Code Vereinfachung

    Hallo erstmal.

    Ganz einfache Frage, wahrscheinlich gibts auch ne ganz einfache Antwort:

    Wie kann man diesen Code vereinfachen? So dass ich nicht 100 Zeilen mit jeweils einer Zahl mehr einsetzen muss:

    GML-Quellcode

    1. if steps_klein = 0{nummer0_color = c_red}else{nummer0_color = c_white;}
    2. if steps_klein = 1{nummer1_color = c_red}else{nummer1_color = c_white;}
    3. if steps_klein = 2{nummer2_color = c_red}else{nummer2_color = c_white;}
    4. if steps_klein = 3{nummer3_color = c_red}else{nummer3_color = c_white;}
    5. if steps_klein = 4{nummer4_color = c_red}else{nummer4_color = c_white;}
    6. if steps_klein = 5{nummer5_color = c_red}else{nummer5_color = c_white;}
    7. if steps_klein = 6{nummer6_color = c_red}else{nummer6_color = c_white;}
    8. if steps_klein = 7{nummer7_color = c_red}else{nummer7_color = c_white;}
    9. if steps_klein = 8{nummer8_color = c_red}else{nummer8_color = c_white;}
    10. if steps_klein = 9{nummer9_color = c_red}else{nummer9_color = c_white;}
    11. if steps_klein = 10{nummer10_color = c_red}else{nummer10_color = c_white;}
    12. if steps_klein = 11{nummer11_color = c_red}else{nummer11_color = c_white;}
    13. if steps_klein = 12{nummer12_color = c_red}else{nummer12_color = c_white;}
    14. if steps_klein = 13{nummer13_color = c_red}else{nummer13_color = c_white;}
    15. if steps_klein = 14{nummer14_color = c_red}else{nummer14_color = c_white;}
    16. if steps_klein = 15{nummer15_color = c_red}else{nummer15_color = c_white;}
    17. if steps_klein = 16{nummer16_color = c_red}else{nummer16_color = c_white;}
    18. if steps_klein = 17{nummer17_color = c_red}else{nummer17_color = c_white;}
    19. if steps_klein = 18{nummer18_color = c_red}else{nummer18_color = c_white;}
    20. if steps_klein = 19{nummer19_color = c_red}else{nummer19_color = c_white;}
    21. if steps_klein = 20{nummer20_color = c_red}else{nummer20_color = c_white;}
    22. if steps_klein = 20{nummer20_color = c_red}else{nummer20_color = c_white;}
    23. ...........
    Alles anzeigen


    Vielen Dank :)
    Gruß, Shari
    Dieser Beitrag wurde bereits 1909 mal editiert, zuletzt von »Sharivari« (Morgen, 19:89)
  • Mach ein Array für diese Farben:

    GML-Quellcode

    1. for (i = 0 ; i < 20 ; ++i)
    2. {
    3. if (steps_klein == i)
    4. {
    5. nummer_color[i] = c_red;
    6. }
    7. else
    8. {
    9. nummer_color[i] = c_white;
    10. }
    11. }
    Alles anzeigen

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Als erstes würde auch ich dir raten, für diese Nummer-Variablen ein Array zu benutzen, weil du dann nur noch durch das Einsetzen einer Zahl auf eine bestimmte Variable in diesem Array zugreifen kannst.

    Alternativ, falls du unbedingt solche einzelnen Variablen brauchst oder haben willst, kannst du auch mit variable_local_set arbeiten:

    GML-Quellcode

    1. var c, i;
    2. for(i := 0: i < nummerAnzahl; i += 1) {
    3. if (i == steps_klein) {
    4. c := c_red;
    5. } else {
    6. c := c_white;
    7. }
    8. variable_local_set("nummer" + string(i) + "_color", c);
    9. }


    Und mein letzter Vorschlag: Führe noch eine zweite Variable ein, steps_klein_last oder so, und jedes mal, wenn steps_klein einen neuen Wert bekommt, setzt du steps_klein_last auf den Wert, den steps_klein gerade hatte. Wenn du sicher gehen willst, das nie zu vergessen, schreib dir einfach ein Skript

    GML-Quellcode

    1. ///scr_set_steps_klein(newValue)
    2. steps_klein_last := steps_klein;
    3. steps_klein := argument0;

    und benutze nur noch dieses Skript, um auf steps_klein zu schreiben. Ausnahme: Beim initialisieren von steps_klein, also wenn du den allerersten Wert zuweist, solltest du das noch ohne das Skript machen und beiden variablen den gleichen Wert zuweisen. Andernfalls würde dir dieses Skript einen Fehler werfen, weil steps_klein noch keinen Wert hat, wenn es steps_klein_last zugewiesen werden soll.

    Dann initialisierst du einfach alle dieser Nummernvariablen mit c_white und dann sieht der Code so aus:

    GML-Quellcode

    1. variable_local_set("nummer" + string(steps_klein_last) + "_color", c_white); // erstmal alles wieder auf weiß setzen
    2. variable_local_set("nummer" + string(steps_klein) + "_color", c_red); // _dann_ das neue rot färben


    Ich rate dir aber nochmal, lieber ein Array zu benutzen, als dieser variable_local_set Methode. Ich hab zwar keine Ahnung, wie performant genau dieser Zugriff ist, aber vom Gefühl her schätze ich das als deutlich schlechter ein, erstmal einen String zusammenzubasteln und dann eine Variable mit diesem Namen zu suchen, als einfach über einen Index auf ein Array zuzugreifen.
  • Benutzer online 1

    1 Besucher