Spritenamen aus Variablen

  • GM 8

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

  • Spritenamen aus Variablen

    Ein paar Monate nicht gemacht und schon stehe ich total auf dem Schlauch. Folgendes Problem habe ich:

    Ein Objekt kann eine Zahl zwischen 1 und 9 sein. Für jede Zahl gibt es ein Sprite. Statt dauernd mit if zu arbeiten, wollte ich es elegant lösen.

    Create:
    zahl = floor(random(9) + 1);
    grafik = 'spr_gruen' + string(zahl);

    Draw:
    draw_sprite(grafik,-1,x+0,y+0);
    Leider wird die Grafik nicht angezeigt, obwohl der Name der Grafik korrekt ist. Wo ist mein Denkfehler?
  • Wenn ich das richtig verstehe, meinst du, dass choose() als Ersatz für zahl dienen soll. Das heißt, er soll zufällig einen der 9 Sprites wählen.

    Das Problem ist, dass ich die Zahl dennoch brauche, da mit dieser Zahl später gerechnet werden soll.

    Also werde ich um das if nicht herum kommen. Schade.
  • Dein Problem besteht darin, dass die Funktion draw_sprite nicht den Namen ("sprite01"), sondern die ID (sprite01) des Sprites verlangt.

    Um dein Problem zu lösen könnte man zum Beispiel alle benötigten IDs in ein Array speichern:

    Create Event:

    GML-Quellcode

    1. sprites[0] = spr_gruen1;
    2. //...
    3. zahl = floor(random(9) + 1);

    Draw Event:

    GML-Quellcode

    1. draw_sprite(sprites[zahl], -1, x, y);
  • Danke für die unterschiedlichen Lösungsansätze. Ich bleibe aber dann doch lieber bei meiner alten Methode.

    GML-Quellcode

    1. if zahl = 1{
    2. draw_sprite(spr_gruen1,-1,x+0,y+0);
    3. }
    4. if zahl = 2{
    5. draw_sprite(spr_gruen2,-1,x+0,y+0);
    6. }
    7. if zahl = 3{
    8. draw_sprite(spr_gruen3,-1,x+0,y+0);
    9. }
    10. if zahl = 4{
    11. draw_sprite(spr_gruen4,-1,x+0,y+0);
    12. }
    13. if zahl = 5{
    14. draw_sprite(spr_gruen5,-1,x+0,y+0);
    15. }
    16. if zahl = 6{
    17. draw_sprite(spr_gruen6,-1,x+0,y+0);
    18. }
    19. if zahl = 7{
    20. draw_sprite(spr_gruen7,-1,x+0,y+0);
    21. }
    22. if zahl = 8{
    23. draw_sprite(spr_gruen8,-1,x+0,y+0);
    24. }
    25. if zahl = 9{
    26. draw_sprite(spr_gruen9,-1,x+0,y+0);
    27. }
    Alles anzeigen