Mehrere Objekte aneinander

  • GM 6

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

  • Mehrere Objekte aneinander

    Mein Problem ist leider nicht so leicht zu erklären...

    Im Spielfeld befinden sich verschiedenfarbige Steine. Wenn drei - oder mehr - der gleichen Farbe aneinander liegen, sollen sie verschwinden. Die Objekte kollidieren NICHT miteinander, sondern sind nur direkt nebeneinander.
    Wie kann ich das lösen?

    P.S.: Die derzeitige Version löscht die Steine schon, wenn nur zwei gleiche aneinander sind. Blöd nur, dass das Spielfeld zufällig erstellt wird und mit der Methode von Beginn an fast leer ist.
  • Sind die Steine alle gleichgross und sind sie alle in einem bestimmten Abstand gittermässig angeordnet?
    "das war meine letzte flamewar PM an dich ."
  • Naja, du könntest alle Objekte in einem Grid speichern: ds_grid..
    dann halt darin abfragen, die zu zerstörenden Objekte in nen Array packen oder so un am Schluss der Überprüfung löschen.. musst dir was überlegen, is halt nurn Ansatz
    "das war meine letzte flamewar PM an dich ."
  • if(!place_free(x+32,y))
    {}

    Wenn rechts was ist, mach deine Aktionen.
    x-32 für links, y+32 für unten und y-32 für oben.

    Viel Erfolg
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • oder machs mit nem 2-dimensionalem Array statt mit nem Grid:


    Hier ein Wink auf nen Gartenzaunbausatz mit schlechter Anleitung.

    GML-Quellcode

    1. global.Feld[floor(room_width/32),floor(room_height/32)]=0 //initialisieren



    GML-Quellcode

    1. global.Feld[x/32,y/32]=meine_farbe//Den Positionen Farben zuweisen


    GML-Quellcode

    1. if global.Feld[x/32 +1,y/32]=meine_farbe or global.Feld..... or ... //prüfen, ob sich gleichfarbige Objekte im Umkreis befinden
    2. then
    3. {
    4. global.to_destroy_count+=1
    5. global.to_destroy[global.to_destroy_count]=id //dieses objekt einer zu zerstören liste hinzufügen
    6. }


    GML-Quellcode

    1. for(i=0;i<to_destroy_count;i+=1)
    2. {
    3. with global.to_destroy[i]
    4. {
    5. instance_destroy()
    6. }
    7. }


    Wenn du das verstanden hast, wirst du auch Folgendes verstehen: Vergiss nicht, zu runden(wie oben)!
    "das war meine letzte flamewar PM an dich ."
  • blubberblub schrieb:

    oder machs mit nem 2-dimensionalem Array statt mit nem Grid:


    Hier ein Wink auf nen Gartenzaunbausatz mit schlechter Anleitung.

    GML-Quellcode

    1. global.Feld[floor(room_width/32),floor(room_height/32)]=0 //initialisieren



    GML-Quellcode

    1. global.Feld[x/32,y/32]=meine_farbe//Den Positionen Farben zuweisen


    GML-Quellcode

    1. if global.Feld[x/32 +1,y/32]=meine_farbe or global.Feld..... or ... //prüfen, ob sich gleichfarbige Objekte im Umkreis befinden
    2. then
    3. {
    4. global.to_destroy_count+=1
    5. global.to_destroy[global.to_destroy_count]=id //dieses objekt einer zu zerstören liste hinzufügen
    6. }


    GML-Quellcode

    1. for(i=0;i<to_destroy_count;i+=1)
    2. {
    3. with global.to_destroy[i]
    4. {
    5. instance_destroy()
    6. }
    7. }


    Wenn du das verstanden hast, wirst du auch Folgendes verstehen: Vergiss nicht, zu runden(wie oben)!
    Das muss ich mir auch mal angewöhnen, ich hab in meiner ganzen GM-Laufbahn glaube nur 1 array benutzt und noch nie ein 2dimensionales.
    Die Idee ist aber gut, ich würds versuchen.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet