image_index abfragen und vergleichen

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

  • image_index abfragen und vergleichen

    Hi,
    ich stehe gerade auf der Leitung...

    Ich habe ein Spritesheet mit 16 Bildern.

    Bei den 16 Bildern sind 4 je eine zusammengehörige Gruppe.
    (0,4,8,12 = Gruppe Rot , 1,5,9,13 = Gruppe Orange, 2,6,10,14 = Gruppe Grün, 3,7,11,15 = Gruppe Blau)

    Es werden 6 Objekte erzeugt und je ein zufälliges Bild vom Spritesheet mit 16 Bildern genommen.

    Zusätzlich erzeuge ich ein "Vergleichsobjekt" mit welchen die 6 Objekte verglichen werden sollen ob sie zur Gruppe( Rot, Orange, ....) gehören.


    Mouse Left Pressed Event:

    Quellcode

    1. if(image_index = 0 or 4 or 8 or 12 && obj_vorgabe.image_index = 0 or 4 or 8 or 12)
    2. {
    3. global.punkte +=1;
    4. instance_destroy();
    5. }else if(image_index = 1 or 5 or 9 or 13 && obj_vorgabe.image_index = 1 or 5 or 9 or 13)
    6. {
    7. global.punkte +=1;
    8. instance_destroy();
    9. }
    10. else if(image_index = 2 or 6 or 10 or 14 && obj_vorgabe.image_index = 2 or 6 or 10 or 14)
    11. {
    12. global.punkte +=1;
    13. instance_destroy();
    14. }
    15. else if(image_index = 3 or 7 or 11 or 15 && obj_vorgabe.image_index = 3 or 7 or 11 or 15 )
    16. {
    17. global.punkte +=1;
    18. instance_destroy();
    19. }
    20. else
    21. {
    22. global.punkte -=1;
    23. instance_destroy();
    24. }
    Alles anzeigen



    Derzeit bekomme ich immer Punkte, auch wenn das Objekt nicht zum Vergleichsobjekt passt (gleiche Gruppe).
    :( :( :(
  • Du kannst mit If nicht bei einer Variable den Wert prüfen und nachher einfach nur or und dann Wert hin schreiben.
    Was ich damit meine, wäre deine erste Zeile so richtig:

    GML-Quellcode

    1. if(image_index == 0 or image_index == 4 or image_index == 8 or image_index == 12 && obj_vorgabe.image_index == 0 or obj_vorgabe.image_index == 4 or 8 or obj_vorgabe.image_index == 12)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Danke,
    Bleibt jedoch immer noch gleich ( immer nur Score +)

    Quellcode

    1. if(image_index == 0 or image_index == 4 or image_index == 8 or image_index == 12 && obj_vorgabe.image_index == 0 or obj_vorgabe.image_index == 4 or obj_vorgabe.image_index == 8 or obj_vorgabe.image_index == 12)
    2. {
    3. global.punkte +=1;
    4. instance_destroy();
    5. }else if(image_index == 1 or image_index == 5 or image_index == 9 or image_index == 13 && obj_vorgabe.image_index == 1 or obj_vorgabe.image_index == 5 or obj_vorgabe.image_index == 9 or obj_vorgabe.image_index == 13)
    6. {
    7. global.punkte +=1;
    8. instance_destroy();
    9. }
    10. else if(image_index == 2 or image_index == 6 or image_index == 10 or image_index == 14 && obj_vorgabe.image_index == 2 or obj_vorgabe.image_index == 6 or obj_vorgabe.image_index == 10 or obj_vorgabe.image_index == 14)
    11. {
    12. global.punkte +=1;
    13. instance_destroy();
    14. }
    15. else if(image_index == 3 or image_index == 7 or image_index == 11 or image_index == 15 && obj_vorgabe.image_index == 3 or obj_vorgabe.image_index == 7 or obj_vorgabe.image_index == 11 or obj_vorgabe.image_index == 15)
    16. {
    17. global.punkte +=1;
    18. instance_destroy();
    19. }
    20. else
    21. {
    22. global.punkte -=1;
    23. instance_destroy();
    24. }
    Alles anzeigen


    Image Speed ist immer auf 0 :)
  • Du solltest auch Klammern verwenden. Ich denke mal um

    GML-Quellcode

    1. ​if(image_index == 0 or image_index == 4 or image_index == 8 or image_index == 12 && obj_vorgabe.image_index == 0 or obj_vorgabe.image_index == 4 or obj_vorgabe.image_index == 8 or obj_vorgabe.image_index == 12)

    Brauchst du Klammern, da du ja Abfragen willst, ob dein Index auf 0,4,8 oder 12 ist und dazu noch vom anderen Objekt.

    GML-Quellcode

    1. ​if((image_index == 0 or image_index == 4 or image_index == 8 or image_index == 12) && (obj_vorgabe.image_index == 0 or obj_vorgabe.image_index == 4 or obj_vorgabe.image_index == 8 or obj_vorgabe.image_index == 12))

    Schau dir mal mein If Bedingungs Tutorial an ;) (In meiner Signatur)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Danke ;)
    Das mit den Klammern hat Wunder gewirkt *lol

    Hätte ich das ganze auch einfacher und eleganter mit einem array lösen können ?
    rot[0] = 0;
    rot[1] = 1;
    rot[2] = 2;
    ....


    Bist du im array rot ist es ok, wenn nicht dann Punkteabzug...
    Dazu werde ich nun mal etwas reinlernen ;)
  • Warum bitte nicht 4 Spritesheets a 4 images, eins für jede Farbe. mit sprite_index kannst du diese addressieren.
    Es würde allerdings schon reichen die images neu zu sortieren (0-3 blau, 4-7,rot usw...), dann kannst du die Abfrage so gestalten

    GML-Quellcode

    1. if (image_index > 3 && image_index < 8) { /*rot*/}

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: