Bomberman Bombenproblem

  • GM 7

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

  • Bomberman Bombenproblem

    Hi, ich bin grad dabei ein Bombermanspiel zu machen und da ist bei mir ein kleines Problem aufgetreten.

    Die Bomben werden im Raster gelegt und wenn ich 2 Bomben direkt nebeneinander lege, dann ist der Sound ganz komisch und eine Sekunde später stürzt es ab, wenn zwischen den Bomben aber ein Rasterplatz frei ist, dann klappt es wunderbar, nur wenn eben 2 Bomben direkt nebeneinander sind nicht.

    Da es wahrscheinlich viel zu viel Code wär, den alles hier aufzuschreiben, lade ich einfach mal die *.gmk hoch.

    Der rote Ball ist bisher der Player, ansonsten bitte nicht weiterbenutzen:
    Bomberman.gmk

    und es muss erst ein Upgrade kommen, dass man mehrere Bomben legen kann.
    Gruß Gamer
  • Ich nehme mal an, dass das Problem darin liegt, dass eine Endlosschleife entsteht.
    Warum das Spiel nur abstürzt, wenn die Bomben nebeneinander liegen, weiß ich jetzt alledings auch nicht.
    Die Lösung ist sollte relativ einfach sein: Du erstellst eine Variable, die festhält, ob die Bombe bereits ihr Destroy Event aufgerufen hat und wenn das der fall ist, wird dieses auch erst gar nicht ausgeführt:

    GML-Quellcode

    1. if (destroyed) { exit; }
    2. destroyed = true;
    3. // ... Rest vom Destroy Event ...

    Alternativ könntest du auch destructable auf false setzten.
    ( Muss dazu sagen, dass ich nichts testen konnte. Also basiert die Antwort nur auf Erfahrung und dem Code, den ich mir angesehen hab :P )
  • Danke, hat aber leider nicht geklappt, sowas wie ne Endlosschleife hab ich mir auch schon gedacht, nur warum kommts dann nur, wenn die direkt neben einander sind, das versteh ich echt nicht.
    Hab beide Methoden ausprobiert, destructable auf false setzen und eine andere Variable, die verhindert, dass das Destroy Event mehrmals ausgeführt wird.

    Schade, hoffentlich hat jemand anderes ne Lösung parat.
    Gruß Gamer
  • Ich hab eine Lösung gefunden, ich weiß aber nicht in wie weit sie ästhetisch ist... Du must eine Fallunterscheidung im Explosionsscr. machen und wenns auf eine Bombe trifft sie nicht zerstören sondern den Alarm auf 1 setzen. Ich habs aber nur mit einer globalen Variable hinbekommen, deswegen die Frage nach der Ästhetik... hier der Code:

    GML-Quellcode

    1. ii=instance_position(x,y-i*var_gridsize,all);
    2. with (ii) global.name = object_get_name(object_index);//den Namen von der Instanz speichern
    3. if (ii!=noone)
    4. {
    5. if (ii.destructable=true)
    6. if (global.name = 'obj_bomb') {with (ii) alarm[0] = 1} else //wenns eine Bombe ist, dann alarm[0] auf 1 setzen
    7. with (ii) {instance_destroy();} //ansonsten zerstören
    8. }
    9. break;

    Ich hoffe ich konnte dir helfen, ich habs bei mir ausprobiert und es hat funktioniert ;)
  • Benutzer online 1

    1 Besucher