if else / else if - optimale Darstellung (Verschachtelung)

  • GM 8

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

  • if else / else if - optimale Darstellung (Verschachtelung)

    Hallo Community

    Folgender Code funktioniert einwandfrei, ist aber sehr unübersichtlich. Wie soll ich die else if's in Zukunft am besten verschachteln?

    GML-Quellcode

    1. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 2 && mouse_y < 22)
    2. {
    3. button_checkbox=1;
    4. }
    5. else
    6. {
    7. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 24 && mouse_y < 46)
    8. {
    9. button_checkbox=2;
    10. }
    11. else
    12. {
    13. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 48 && mouse_y < 70)
    14. {
    15. button_checkbox=3;
    16. }
    17. else
    18. {
    19. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 72 && mouse_y < 94)
    20. {
    21. button_checkbox=4;
    22. }
    23. else
    24. {
    25. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 96 && mouse_y < 118)
    26. {
    27. button_checkbox=5;
    28. }
    29. else
    30. {
    31. button_checkbox=0;
    32. }
    33. }
    34. }
    35. }
    36. }
    Alles anzeigen


    Lg
    Michael :)


    //EDIT
    OMG. Hier im Post sieht's ja noch schrecklicher aus! :D
  • Nunja es lässt sich so zusammenfassen (hab die Klammern auch entfernt, ist in diesem Fall nicht nötig, außer du möchtest es.)

    GML-Quellcode

    1. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 2 && mouse_y < 22)
    2. button_checkbox=1;
    3. else if (mouse_x > 2 && mouse_x < 22 && mouse_y > 24 && mouse_y < 46)
    4. button_checkbox=2;
    5. else if (mouse_x > 2 && mouse_x < 22 && mouse_y > 48 && mouse_y < 70)
    6. button_checkbox=3;
    7. else if (mouse_x > 2 && mouse_x < 22 && mouse_y > 72 && mouse_y < 94)
    8. button_checkbox=4;
    9. else if (mouse_x > 2 && mouse_x < 22 && mouse_y > 96 && mouse_y < 118)
    10. button_checkbox=5;
    11. else
    12. button_checkbox=0;
    Alles anzeigen

    © 2008 by Teamgrill Productions
  • hm wenn du viel mit sowas arbeitest würde ich mir nen script dafür schreiben:

    GML-Quellcode

    1. if mouse_inside_rectangle(x1, y1, x2, y2)
    2. { }

    der würde dann so irgendwie aussehen:

    GML-Quellcode

    1. return (mouse_x > argument0 && mouse_x < argument1 && mouse_y > argument2 && mouse_y < argument3)
  • Vielen Dank für eure Antworten.

    Beide Varianten sehen sehr gut aus.

    @florpp
    Diese Art von Code kommt nur ein einziges Mal vor, sodass ich ein Script als überflüssig betrachte. Aber ansonsten ist die Überlegung sehr gut.

    @MasterXY
    Ich verwende prinzipiell immer alle (auch unnötige) Klammern und Sonderzeichen (&&, ! etc.). Da deine gezeigte Variante aber deutlich übersichtlicher ist, werde ich diese wohl in Zukunft in solchen Fällen gerne anwenden.

    Vielen Dank euch beiden!


    \\THEMA/PROBLEM GELÖST!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Michaelp800 () aus folgendem Grund: gelöst

  • @Michaelp800
    florpp's Skript funktioniert fuer alle deine if-Abfrageb, denn du kannst einzelne Argumente uerbergeben. Z.B.:

    GML-Quellcode

    1. if (mouse_x > 2 && mouse_x < 22 && mouse_y > 2 && mouse_y < 22)


    wird ganz einfach zu:

    GML-Quellcode

    1. if mouse_inside_rectangle(2, 22, 2, 22)


    Und dann kannst du das auch noch mit MasterXY's Variante kombinieren und fertig.

    MfG Trixt0r ;)

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.