Mit random Ojekt ausgeben?

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

  • Mit random Ojekt ausgeben?

    Hallo GM´s ?(

    Hab hier ein großes Anfängerproblem.

    Hab hier 16 Objekte (w0 bis w15).
    Möchte an einer Position (x,y) eins der 16 Objekte per random darstellen.
    Dann soll dieses Zufallsobjekt nach unten fallen.
    Also brauch ich ja auch die Variable des Zufallsobjekts.

    Mit dieser Funktion kann ich ja bis zu 4 Objekte per Zufall definieren
    aber bei 16 Objekten muss das doch auch per Script gehen?



    Danke Euch schon mal ;)

    VegasX
    Wen es Interessiert.......



    Nur ein mittelmäßiger Mensch ist immer in Hochform.............
  • Du machst einfach folgendes Event das du zur funktions auslösen brauchst.

    GML-Quellcode

    1. maxcreate = 4 // Die Zahl wie oft die Funktion durch geführt werden soll.
    2. for (i++;i<maxcreate) {
    3. randomnum = ceil(random(16));
    4. switch (randomnum) {
    5. case 1: object_create(*objket nummmer 1*); break;
    6. case 2: object_create(*objket nummmer 2*); break;
    7. case 3: object_create(*objket nummmer 3*); break;
    8. usw.
    9. }
    10. }

    So könnte man das z.b. lösen...
  • Das könnte auch gehen. (habs net getestet)

    GML-Quellcode

    1. anzahl = 16
    2. rand = floor(random(anzahl+1))
    3. execute_string("instance_create(x,y,w"+anzahl+")")

    Aber du sollst wissen das execute_string ein träger Befehl ist.
    Die Möglichkeit von Blank wäre also die schnellste. (wobei ich nicht verstehe wieso du "object_create" schreibst!? (@blank))
  • Also irgendwie gehen beide Varianten nicht :(
    Trotzdem Danke.

    Ich hab das aber mal ausgetüftelt und bis hier geht alles super.

    GML-Quellcode

    1. {
    2. randomnum = ceil(random(16));
    3. switch (randomnum)
    4. {
    5. case 1: instance_create(108,108,w0); break;
    6. case 2: instance_create(108,108,w1); break;
    7. case 3: instance_create(108,108,w2); break;
    8. case 4: instance_create(108,108,w3); break;
    9. case 5: instance_create(108,108,w4); break;
    10. case 6: instance_create(108,108,w5); break;
    11. case 7: instance_create(108,108,w6); break;
    12. case 8: instance_create(108,108,w7); break;
    13. case 9: instance_create(108,108,w8); break;
    14. case 10: instance_create(108,108,w9); break;
    15. case 11: instance_create(108,108,w10); break;
    16. case 12: instance_create(108,108,w11); break;
    17. case 13: instance_create(108,108,w12); break;
    18. case 14: instance_create(108,108,w13); break;
    19. case 15: instance_create(108,108,w14); break;
    20. case 16: instance_create(108,108,w15); break;
    21. }
    22. }
    Alles anzeigen


    Nun müsste aber der Zufallsstein (w0 bis w15) bis zur Kollision
    (Kollision mit allen Objekten!)
    nach unten fallen (mit einer definierbaren Geschwindigkeit).
    Mit Gravitation währe noch besser.

    Hab schon mit verschiedenen "move" und "motion" Befehlen probiert aber nix geht :no:

    GML-Quellcode

    1. {
    2. randomnum = ceil(random(16));
    3. switch (randomnum)
    4. {
    5. case 1: instance_create(54,108,w0) motion_set(270,4); break;
    6. case 2: instance_create(54,108,w1) motion_set(270,4);break;
    7. case 3: instance_create(54,108,w2) motion_set(270,4);break;
    8. case 4: instance_create(54,108,w3) motion_set(270,4);break;
    9. case 5: instance_create(54,108,w4) motion_set(270,4);break;
    10. case 6: instance_create(54,108,w5) motion_set(270,4);break;
    11. case 7: instance_create(54,108,w6) motion_set(270,4);break;
    12. case 8: instance_create(54,108,w7) motion_set(270,4);break;
    13. case 9: instance_create(54,108,w8) motion_set(270,4);break;
    14. case 10: instance_create(54,108,w9) motion_set(270,4);break;
    15. case 11: instance_create(54,108,w10) motion_set(270,4);break;
    16. case 12: instance_create(54,108,w11) motion_set(270,4);break;
    17. case 13: instance_create(54,108,w12) motion_set(270,4);break;
    18. case 14: instance_create(54,108,w13) motion_set(270,4);break;
    19. case 15: instance_create(54,108,w14) motion_set(270,4);break;
    20. case 16: instance_create(54,108,w15) motion_set(270,4);break;
    21. motion_set(270,4);
    22. sound_play(sound0);
    23. }
    24. }
    Alles anzeigen


    Es ist ein Krampf X(
    Wen es Interessiert.......



    Nur ein mittelmäßiger Mensch ist immer in Hochform.............
  • ich kanns zwar net testen aber ich hoffe das es so klappt

    GML-Quellcode

    1. {
    2. randomnum = ceil(random(16));
    3. switch (randomnum)
    4. {
    5. case 1: create=instance_create(54,108,w0); create=motion_set(270,4); break;
    6. case 2: create=instance_create(54,108,w1); create=motion_set(270,4);break;
    7. case 3: create=instance_create(54,108,w2); create=motion_set(270,4);break;
    8. case 4: create=instance_create(54,108,w3); create=motion_set(270,4);break;
    9. case 5: create=instance_create(54,108,w4); create=motion_set(270,4);break;
    10. case 6: create=instance_create(54,108,w5); create=motion_set(270,4);break;
    11. case 7: create=instance_create(54,108,w6); create=motion_set(270,4);break;
    12. case 8: create=instance_create(54,108,w7); create=motion_set(270,4);break;
    13. case 9: create=instance_create(54,108,w8); create=motion_set(270,4);break;
    14. case 10: create=instance_create(54,108,w9); create=motion_set(270,4);break;
    15. case 11: create=instance_create(54,108,w10); create=motion_set(270,4);break;
    16. case 12: create=instance_create(54,108,w11); create=motion_set(270,4);break;
    17. case 13: create=instance_create(54,108,w12); create=motion_set(270,4);break;
    18. case 14: create=instance_create(54,108,w13); create=motion_set(270,4);break;
    19. case 15: create=instance_create(54,108,w14); create=motion_set(270,4);break;
    20. case 16: create=instance_create(54,108,w15); create=motion_set(270,4);break;
    21. sound_play(sound0);
    22. }
    23. }
    Alles anzeigen


    und Blank...
    deins klappt wahrscheinlich nicht, weil du

    for (i++;i<maxcreate) {
    geschrieben hast, aber es in wirklichkeit
    for (i=0;i<maxcreate;i+=1) {
    heißen muss...
    glaube ich^^

    sorry wenn ich mich irre
    Die Schönheit liegt im Auge des Betrachters :D
  • Ok, erst mal vielen Dank für die vielen Antworten.
    Das hier ist der aktuelle Stand:

    GML-Quellcode

    1. {
    2. zufallszahl = floor(random(16));
    3. switch (zufallszahl)
    4. {
    5. case 0: create = instance_create(54,108,w0); create.speed = 18; create.direction = 270; break;
    6. ...
    7. ...
    8. ...
    9. case 15: create = instance_create(54,108,w15); create.speed = 18; create.direction = 270; break;
    10. }
    11. sound_play(sound0)
    12. }
    Alles anzeigen


    Nun ist das Problem, das dieses Script 9 mal hintereinander ausgeführt
    werden soll. (Repeat 9).
    Geht auch aber dann werden 9 Zufallssymbole oben gesetzt und fallen dann
    gemeinsam nach unten.
    Es sollte aber in jeder der 9 Runden ein Symbol erscheinen und dann nach
    unten fallen. Dann das nächste und wieder nach unten fallen usw....


    Und gleich noch ne Frage.
    Wie kann man im Script regeln, das ALLE Symbole sich stapeln und nicht in einander rutschen. Also das sie Solide sind?
    Hab die Sprites alle solide gemacht aber sie stoßen sich nicht gegenseitig ab.
    Wen es Interessiert.......



    Nur ein mittelmäßiger Mensch ist immer in Hochform.............

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

  • Bin mir nicht sicher, aber du könntest das so regeln:

    GML-Quellcode

    1. global.symbol[0] = true;
    2. ...
    3. global.symbol[8] = true;

    dann

    GML-Quellcode

    1. symbol = round(random(8));
    2. switch (symbol)
    3. {
    4. case 0:
    5. if global.symbol[0] = true
    6. {
    7. instance_create(x,y,symbol0);
    8. }
    9. ...
    10. case 8:
    11. if global.symbol[8] = true
    12. {
    13. instance_create(x,y,symbol8);
    14. }
    Alles anzeigen


    ich hoffe du verstehst es :D es sind zwar 9 symbole, aber ein index fängt mit 0 an. also 0 - 8
  • @Mad
    Hä? Wozu sind den die Árrays da?

    @VegasX

    Warum hast du 16 verschiedene Objekte? Unterscheiden sich die überhaupt von irgendetwas? Kann man die nicht in einem Objekt machen?

    Machmal das hier:

    Create Event

    GML-Quellcode

    1. zahler=9


    Step Event

    GML-Quellcode

    1. if zahler > 0
    2. {
    3. zufallszahl = floor(random(16));
    4. switch (zufallszahl)
    5. {
    6. case 0: create = instance_create(54,108,w0); break;
    7. ...
    8. ...
    9. ...
    10. case 15: create = instance_create(54,108,w15); break;
    11. }
    12. create.speed = 18; create.direction = 270;
    13. sound_play(sound0)
    14. zahler-=zahler
    15. }
    Alles anzeigen


    ädit: Code verkleinert

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von bernt ()

  • Wenn du repeat einsetzt wird das ganze in deinem Fall neunmal ausgeführt. Aber im selben Step. Du merkst also nicht dass das hintereinander geschieht, da erst die Schleife durchlaufen wird und dann am Ende das Bild gezeichnet. Wenn du eine Verzögerung haben willst, dann schmeiß das repeat raus, schreib deinen ganzen Code in ein Alarm Event und setze am Schluss den Alarm wieder auf eine bestimmte Wartezeit. zB: alarm[0]=room_speed; dann wird jede Sekunde ein Objekt erstellt.
    Einige meiner Spiele:
  • Riesen Dank euch allen!

    Hab sehr viel gelernt und kann nun mit den Hauptsachen im Game
    weiter machen.

    Ich konnte das Repeat Problem mit einer Timeline lösen :P
    Das "GM Anfänger Leben" kann ja soooo... einfach sein :D

    OK, jetzt gehts an das "Eingemachte" (Auswertungsroutine :( )
    Da werd ich euch wohl weiter nerven 8)


    LG
    VegasX
    Wen es Interessiert.......



    Nur ein mittelmäßiger Mensch ist immer in Hochform.............