Bubble Spiel

  • GM 7

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

  • Bubble Spiel

    Hallo
    Ich habe schon mal gesucht aber nichts nützliches gefunden.

    Also ich möchte gerne ein Spiel wie dieses machen (fettspielen.de/de/spiel/grips-puzzle/bubble-buster)
    Jetzt habe ich einige Probleme:

    1. Wie mache ich es, dass wenn man auf einen Ball klickt und um diesen Ball zwei Weitere Bälle in der selben Farbe (also 3 oder mehr) sind, dass diese dann verschwiden.

    2. Ich möchte gerne dass die Fraben zufällig sind. Also bei jedem neustart des Spieles andere Farben.

    P.S.: Ich habe NICHT die PRO Version con GM. Und es wäre schön, wenn eine Datei dabei wäre!

    Ich bin keine Signatur... Ich putze hier nur!
  • Habe gerade wie schon gesagt kein GM, aber ich würde es ca. so machen.

    if (point_distance(x,y,(instance_nearest(obj_blubberblue)).x,(instance_nearest(obj_blubberblue)).y)<32) //32, what ever you want..

    und daswiederholst du ein paar mal...

    ich binn mir nicht ganz sicher, aber ich glaube es gibt irgeneine funktion die die anzahl von instancen eines types in einem gewissen radius wiedergibt. Dann schreibst du nur noch ein mal repeat (instancen in umgebung) {Hier den obrigen code} .

    Hoffe ich kann dir helfen obwohl ich wirklich planlos bin ob die codes richtig geschrieben sind und ob die argumente stimmen.
  • Vieleicht einfach nur weil es ein if stateent ist, der sonst nichts macht?

    repeat (anzahl in der umgebung*)
    {
    if (point_distance(x,y,(instance_nearest(obj_blubberblue)).x,(instance_nearest(obj_blubberblue)).y)<32)
    {
    with instance_nearest(obj_blubberblue) {instance_destroy()};
    }
    }


    *Ich habe nachgedacht, wenn ich mich nicht täusche gibt es eine funktion namens instance_position(x,y,obj), mit einer schönen schleife, einem Array (Ich liebe Arrays) , liese sich was machen...
  • GML-Quellcode

    1. // obj_blubber ist das Elternobjekt aller blubber
    2. with (obj_blubber) {
    3. // Wenn Sprite das selbe ist wie beim Objekt, das den Skript ausführt
    4. if (sprite_index = other.sprite_index && // und
    5. // dieses Objekt nicht weiter als 32 pixel entfernt ist
    6. point_distance(x,y,other.x,other.y)<=32) {
    7. instance_destroy();
    8. }
    9. }
    Achja, das betrifft auch das Objekt, welches den Skript ausführt.
    Wenn du das nicht haben willst, bau noch folgende Abfrage ein: id != other.id
  • Stimmt, daran hab ich nicht gedacht ^^

    GML-Quellcode

    1. var number;
    2. number = 0;
    3. with (obj_blubber) {
    4. if (sprite_index = other.sprite_index &&
    5. point_distance(x,y,other.x,other.y)<=32) {
    6. select = true; number = false;
    7. } else {select = false;}
    8. }
    9. if (number>=3)
    10. with (obj_blubber)
    11. if (select) {
    12. instance_destroy();
    13. }
    Alles anzeigen

    Sollte funktionieren, hab es natürlich nicht getestet :P
    EDIT: Ok, stimmt, geht nicht. Ich hab das Spiel nicht angeguckt. Dachte es wäre ein BubbleBobble-Abklatsch. Da gehen die Steine automatisch weg, wenn sich mindestens drei berühren. Zu dem Problem fällt mir auch eine elegante Lösung ein, hab jetzt aber nicht die Zeit und/oder Lust, da was zu machen bzw. erklären ^^

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

  • NICHT getestet!

    edit: funzt wahrschienlich nicht, aber so ähnlcih sollte es miener meinung nach gemacht werden, mit ner rekursion, sonsd werden manche kugeln möglicherweise nicht erfasst, da in einer 5er kette vll zuerst die mittleren 3 zerstört werden und die restlichen 2 weit auseeinander sind...

    ginge das nicht a besten mit einer rekursion?

    ein execute script (hier "check")

    n=0;

    with (objekt-des-selben-typs)

    {

    if sprite_index=other.sprite_index // selbe farbe?

    {

    if collision_circle(x,y,dein-radius,other.id,1,1)>0

    other.n+=1; // anzahl an anliegenden kugeln,

    //zu erklärung. so wird vermutlich (nicht getestet) von jedem nachbarn und auch

    //sich selbst n+=1 gerechent, da im nachhinein auch die adneren instancen (alle ) desselbe script ausführen.also falls es >=3 is .....

    if other.n>=2 script_execute(check); // falls es 2 nachbarn hat, sind es insgesamt 3 kugeln

    }

    }



    das immer dann ausführen wenn eine neue collision erfolgt, also wenn sich etwas "verändert", ein bubble hinzugeschossen wird zB so:

    im step event der kugeln:

    if global.change=1

    {

    global.change=0;

    script_execute(check);

    }

    if n>=3 instance_destroy(); // die vorberechnungen bestimmen "n" im check-script





    dann imemr nach einer "explosion" oder dem schuss einer kugel wird global.change=1 gesetzt.

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

  • Benutzer online 1

    1 Besucher