Bomberman

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

  • hallo, ich berusche ein bomberman zu proggen. hört sich einfach an, ist es eigentlich auch, aber es gibt ein großes problem mit der explosion.

    und zwar möchte ich das man, wenn man extras aufsammelt auch stärkere bomben hatt. (habe ich hingekriegt indem ich ne variable strange gemacht habe) an benutze ich volgenden code

    Quellcode

    1. if strange<=32
    2. instance_create(x+32,y,obj_fire)
    3. instance_create(x-32,y,obj_fire)
    4. [...]
    5. usw bis alle abgehandelt sind.
    leider wird dadurch acuh das feuer hinter wänden created. ds sieht aber zimlich bescheiden aus, und macht nicht wirklich sinn.
    wie kann ich es, lösen das wenn das feuer auf eine wand trift nicht weiter ausbreitet? (nur die seite die auf die wand trift, die anderen sollen sich normal ausbreiten bis zum strange max wert.)
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • puuuuuh...
    also ich habs geschafft
    aber wenn du noch größere explosionen willst musst du das mir nur sagen
    denn es ist sehr komplitziert
    und bei jeder neuen explosionsgröße wird das script um vieles länger

    mach diesen script hier einfach in den destroy event von deiner bombe rein
    ersetze es mit deinem alten script
    der ist lang

    Edit:
    weil ich so nett bin habe ich schon mal vorgesorgt :D ;)

    if obj_player1.strange >=32{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    {instance_create(x+32,y,obj_fire)}
    if position_empty(x-32,y)
    {instance_create(x-32,y,obj_fire)}
    if position_empty(x,y+32)
    {instance_create(x,y+32,obj_fire)}
    if position_empty(x,y-32)
    {instance_create(x,y-32,obj_fire)}}

    if obj_player1.strange >=64{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    {instance_create(x+64,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    {instance_create(x-64,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    {instance_create(x,y+64,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    {instance_create(x,y-64,obj_fire)}}

    if obj_player1.strange >=96{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    if position_empty(x+96,y)
    {instance_create(x+96,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    if position_empty(x-96,y)
    {instance_create(x-96,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    if position_empty(x,y+96)
    {instance_create(x,y+96,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    if position_empty(x,y-96)
    {instance_create(x,y-96,obj_fire)}}

    if obj_player1.strange >=128{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    if position_empty(x+96,y)
    if position_empty(x+128,y )
    {instance_create(x+128,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    if position_empty(x-96,y)
    if position_empty(x-128,y )
    {instance_create(x-128,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    if position_empty(x,y+96)
    if position_empty(x,y+128 )
    {instance_create(x,y+128,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    if position_empty(x,y-96)
    if position_empty(x,y-128 )
    {instance_create(x,y-128,obj_fire)}}

    if obj_player1.strange >=160{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    if position_empty(x+96,y)
    if position_empty(x+128,y )
    if position_empty(x+160,y)
    {instance_create(x+160,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    if position_empty(x-96,y)
    if position_empty(x-128,y )
    if position_empty(x-160,y)
    {instance_create(x-160,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    if position_empty(x,y+96)
    if position_empty(x,y+128 )
    if position_empty(x,y+160)
    {instance_create(x,y+160,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    if position_empty(x,y-96)
    if position_empty(x,y-128 )
    if position_empty(x,y-160)
    {instance_create(x,y-160,obj_fire)}}

    if obj_player1.strange >=192{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    if position_empty(x+96,y)
    if position_empty(x+128,y )
    if position_empty(x+160,y)
    if position_empty(x+192,y)
    {instance_create(x+192,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    if position_empty(x-96,y)
    if position_empty(x-128,y )
    if position_empty(x-160,y)
    if position_empty(x-192,y)
    {instance_create(x-192,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    if position_empty(x,y+96)
    if position_empty(x,y+128 )
    if position_empty(x,y+160)
    if position_empty(x,y+192)
    {instance_create(x,y+192,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    if position_empty(x,y-96)
    if position_empty(x,y-128 )
    if position_empty(x,y-160)
    if position_empty(x,y-192)
    {instance_create(x,y-192,obj_fire)}}

    if obj_player1.strange >=224{
    instance_create(x,y,obj_fire)
    if position_empty(x+32,y)
    if position_empty(x+64,y)
    if position_empty(x+96,y)
    if position_empty(x+128,y )
    if position_empty(x+160,y)
    if position_empty(x+192,y)
    if position_empty(x+224,y)
    {instance_create(x+224,y,obj_fire)}
    if position_empty(x-32,y)
    if position_empty(x-64,y)
    if position_empty(x-96,y)
    if position_empty(x-128,y )
    if position_empty(x-160,y)
    if position_empty(x-192,y)
    if position_empty(x-224,y)
    {instance_create(x-224,y,obj_fire)}
    if position_empty(x,y+32)
    if position_empty(x,y+64)
    if position_empty(x,y+96)
    if position_empty(x,y+128 )
    if position_empty(x,y+160)
    if position_empty(x,y+192)
    if position_empty(x,y+224)
    {instance_create(x,y+224,obj_fire)}
    if position_empty(x,y-32)
    if position_empty(x,y-64)
    if position_empty(x,y-96)
    if position_empty(x,y-128 )
    if position_empty(x,y-160)
    if position_empty(x,y-192)
    if position_empty(x,y-224)
    {instance_create(x,y-224,obj_fire)}}

    Die Schönheit liegt im Auge des Betrachters :D

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

  • es geht auch einfacher
    nur es ist mir noch nicht eingefallen
    denn man kann ja so machen das er schaut ob eine wand auf der x linie (oder achse das weiß ich ja gerade nicht
    habe ich schon mal vor kurzem hier im forum gesehen
    aber da ichs nicht genau weiß konnte ich auch nicht danach suchen)
    ist und wenn nicht (also die linie bis zu einem punkt)
    dann macht er die explosion dorthin
    Die Schönheit liegt im Auge des Betrachters :D
  • AAAANNNNDDDYYYYY!!!!!
    Ich wein gleich... ;(
    Mal angelehnt an Andys Code kürz sich seinen Kram mal ab.

    Also, wir geben den "range" mal in Feldern an (Also 1 = 1 Feld (jetzt 32*32)).
    Minimaler Range ist -1, also gar keine Explosion. 1 ist nur ein Feld, ab 2 aufwärts hat man dann die typische Explosion.

    Quellcode

    1. for(i=0;i<range+1;i+=1)
    2. {
    3. if position_empty(x+32*i,y) then instance_create(x+32*i,y,obj_fire);
    4. if i = 0 then continue; // Falls 0, muss ja nur ein Feld gemacht werden, also gehts ggf. bei 1 weiter
    5. if position_empty(x-32*i,y) then instance_create(x-32*i,y,obj_fire);
    6. if position_empty(x,y+32*i) then instance_create(x,y+32*i,obj_fire);
    7. if position_empty(x,y-32*i) then instance_create(x,y-32*i,obj_fire);
    8. }

    Müsste funzen, ist jetzt aufm Kopf. Und Andy, bis Freitag liest du nochmal das Kapitel Statements, ich frag dich demnächst ab. :D ;)
  • hmm, geht irgentwie nicht. es wir immer nur ein feld erzeugt.
    aber einen großen fehler hatt der code noch, er muss beim obj_wall verhindern durchzugehen, aber durch obj_player und obj_kiste soll die flamme gehen. position_empty geht also auf gar keinen fall.
    das muss noch durch if object is in position obj_wall ersetzt werden.


    aber nochmal zu mewx's code:
    wieso ist zeile 4 so unsyncron eingebaut?? das verstehe ich irgentiwie nicht.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl