Bomberman Explosion

  • GM 8
  • Bomberman Explosion

    Hallo,
    ich mache ein Bomberman Spiel und möchte wissen, wie man am besten die Explosion hinkriegt... also mit einer Variable mit der Explosionsstärke. Ich wüsste gar nicht, wo ich anfangen sollte, nur dass es mit einer Variable ist, hoffentlich wisst ihr eine einfache Lösung.

    mfg Henrik
    I am an in the GM Quiz!
  • Hi,

    hier ist ein ausschnitt aus meinem Bomberman Klon:
    Spoiler anzeigen

    GML-Quellcode

    1. var_gridsize=16;
    2. bombpower=6
    3. var i, ii;
    4. i=1;
    5. //Explosion in der Mitte
    6. instance_create(x,y,obj_mexplo);
    7. //Explosion nach oben
    8. repeat(bombpower)
    9. {
    10. if (!collision_point(x,y-i*var_gridsize,all,false,false)) //zuerst wird überprüft
    11. { // ob sich oberhalb der Bombe ein Hinderniss befindet
    12. instance_create(x,y-i*var_gridsize,obj_vexplo) //wenn nicht, wird dort die Explosion erzeugt
    13. i+=1; //und die Positionsabfrage rutsch ein Rasterkästchen nach oben.
    14. }
    15. else //falls sich dort aber ein Hinderniss befindet
    16. {
    17. ii=instance_position(x,y-i*var_gridsize,all); //wird die ID davon gespeichert
    18. if (ii!=noone)
    19. {
    20. if (ii.destructable=true)
    21. { //und wenn das Hinderniss zerstörbar ist
    22. with (ii) {instance_destroy();} //wird es zerstört
    23. break
    24. }
    25. }
    26. }
    27. }
    28. i=1;
    29. //Explosion nach unten
    30. repeat(bombpower)
    31. {
    32. if (!collision_point(x,y+i*var_gridsize,all,false,false))
    33. {
    34. instance_create(x,y+i*var_gridsize,obj_vexplo)
    35. i+=1;
    36. }
    37. else
    38. {
    39. ii=instance_position(x,y+i*var_gridsize,all);
    40. if (ii!=noone)
    41. {
    42. if (ii.destructable=true)
    43. {
    44. with (ii) {instance_destroy();}
    45. break
    46. }
    47. }
    48. }
    49. }
    50. i=1;
    51. //Explosion nach links
    52. repeat(bombpower)
    53. {
    54. if (!collision_point(x-i*var_gridsize,y,all,false,false))
    55. {
    56. instance_create(x-i*var_gridsize,y,obj_hexplo)
    57. i+=1;
    58. }
    59. else
    60. {
    61. ii=instance_position(x-i*var_gridsize,y,all);
    62. if (ii!=noone)
    63. {
    64. if (ii.destructable=true)
    65. {
    66. with (ii) {instance_destroy();}
    67. break
    68. }
    69. }
    70. }
    71. }
    72. i=1;
    73. //Explosion nach rechts
    74. repeat(bombpower)
    75. {
    76. if (!collision_point(x+i*var_gridsize,y,all,false,false))
    77. {
    78. instance_create(x+i*var_gridsize,y,obj_hexplo)
    79. i+=1;
    80. }
    81. else
    82. {
    83. ii=instance_position(x+i*var_gridsize,y,all);
    84. if (ii!=noone)
    85. {
    86. if (ii.destructable=true)
    87. {
    88. with (ii) {instance_destroy();}
    89. break
    90. }
    91. }
    92. }
    93. }
    94. i=1;
    Alles anzeigen


    var_gridsize ist die größe deines rasters
    bombpower ist die weite(miite nicht mitt gerechnet)

    ich hoffe es ist genügend kommentiert, wenn du aber Fragen hast, einfach fragen.

    Die Objekte:
    obj_mexplo ist die mitte der exlposion
    obj_hexplo ist eine horizontale explosion
    obj_vexplo ist eine vertikale explosion

    dafür muss aber jedes objekt, jede Wand die variable destructable besitzten
    (false=nicht durch explosion zerstörbar, true=durch explosion zerstörbar)