Schalter zufällig *nacheinander* aufleuchten lassen

  • GM 8

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

  • Schalter zufällig *nacheinander* aufleuchten lassen

    Hätte da gleich noch ein Problem: ich habe mehrere Schalter, die unterschiedlich beschriftet sind, genauer gesagt 30 Stück davon. Jeder dieser Schalter hat ein Image "off" und ein Subimage "on". Nun sollen alle diese Schalter, die in einem Rechteck angeordnet sind, per Zufallsfallszahl schnell nacheinander aufleuchten - aber niemals 2 gleichzeitig, sondern immer nacheinander, jedoch nicht in der Reihenfolge, in der sie liegen, sondern eben per Zufall. So daß der letzte aufleuchtende Schalter per Zufall ermittelt wird.

    Ich bekomme das aber nicht hin, daß jeder Schalter nur einmal seinen Zustand wechselt und dann wieder auf "off" springt - solange, bis er wieder an der Reihe ist. Wenn ich jetzt für jeden Schalter noch 2 If-Abfragen einbaue, welches Image gerade gezeigt wird, dann wird die Routine doch viel zu langsam - oder? Die Auswahl selbst kann man mit switch steuern, aber die Images....?
    Welchen Weg gibt es noch, die Schalter per Zufall schnell aufleuchten zu lassen und dann einen auszuwählen? Sie müssen so schnell nacheinander aufleuchten, daß der Spieler nicht bewußt warten kann, bis ein bestimmter aufleuchtet...

    Danke schon mal im voraus für Eure Mühen,
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Hmh, hier mal eine idee:

    GML-Quellcode

    1. //create event eines Controler Objektes (das vor den schaltern im raum platziert wurde!):
    2. global.num = 0;
    3. //create event der Schalter:
    4. global.buttons[global.num] = id;
    5. button_number = global.num;
    6. global.num += 1;
    7. //alarm event 0 der Schalter:
    8. sprite_index = off;
    9. var rr;
    10. do
    11. rr = irandom(global.num-1)
    12. until(rr != button_number);
    13. with(global.buttons[rr])
    14. {
    15. sprite_index = on;
    16. alarm[0] = 5 // Zeit die der Knopf leuchten soll
    17. }
    18. //Event zum Aktivieren der Lichter:
    19. with(global.buttons[irandom(global.num-1)])
    20. {
    21. sprite_index = on;
    22. alarm[0] = 5 // Zeit die der Knopf leuchten soll
    23. }
    Alles anzeigen

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Vielen Dank für die schnelle Antwort! Werde ich gleich mal ausprobieren.
    Ganz ehrlich gesagt, habe ich genau mit der ID-Nummer jedes Objektes immer noch meine Schwierigkeiten. Ich weiß nie, wie ich diese Nummer herausbekommen kann...
    Thx, Archie

    Lieber DragonGamer,
    könntest Du bitte noch mal nach deinem Code schauen, da stümmt was net, glaub ich. Habe ihn dahingehend abgeändert, daß nicht die sprite_index getauscht wird, sondern die image_index des Objektes, da die Buttons ja so aufgebaut sind. Die Routine läuft, aber alle Buttons wechseln nur einmal alle zusammen den Zustand und dann passiert nichts mehr. Der Alarm zählt unermüdlich runter, aber "global.num" bleibt von Anfang an auf der Zahl der Anzahl der Buttons stehen. Soll das so sein....? Wo könnte denn sonst der Fehler liegen?
    Gruß Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:

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

  • Hmh, also ich hab jetzt mal ein Example gebastelt :)

    Hoffe es hilft. hab eigentlich nur den obigen Code benutzt.
    Dateien

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Ja, vielen, vielen Dank noch mal. Hab das gleich mal ausprobiert. Ist ja direkt spannend wie ein Krimi:
    ich hab zwar auch ein Controller-Objekt, aber der eigentliche Aufruf der Routine geschieht über einen Button. Steht das im Controller, läuft's wie bei Dir - steht es im Button, passiert auch was, aber dann machen die Schalter was ganz anderes... *lol* Ja, da bin ich dann wohl den ganzen Abend noch beschäftigt, den Fehler zu finden...
    Also merci,
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Sicher dass du dies hier befolgt hast und der Knopf vor den Leucht-Knöpfen in den Raum gestellt wurde?
    //create event eines Controler Objektes (das vor den schaltern im raum platziert wurde!):

    Da du wahrscheinlich die "treat unitialized variables as 0"-Funktion aktiviert hast (weil sonst sowieso eine Fehlermeldung kommen würde) kann es eiegentlich nicht daran liegen. Nur dies ist die einzige Erklärung wenn das Problem wirklich vom Objekt abhängig ist.

    Eine andere Möglichkeit wäre wenn du irgendwo anders schon eine der globalen Variablen verwendest. Dies führt zwangsläufig zu Problemen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • DragonGamer schrieb:

    Sicher dass du dies hier befolgt hast und der Knopf vor den Leucht-Knöpfen in den Raum gestellt wurde?

    GANZ sicher! :) Ein Controller-Objekt erstelle ich immer als allererstes bei einem neuen Programm....
    Hab den Fehler noch nicht gefunden, aber ich nehme an, von irgendwo anders kommt mir eine Anweisung mit den Schaltern in die Quere, die das verursacht. Bin weiter auf der Suche...
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Benutzer online 3

    3 Besucher