This site requires JavaScript, please enable it in your browser!
Greenfoot back
MrExamined
MrExamined wrote ...

2018/10/7

Auf Variable Beziehen

1
2
MrExamined MrExamined

2018/10/7

#
Hi, ich möchte den Wert der "exup"-Variable aus ExplUpgrade() in Explosionen() übernehmen oder mich darauf beziehen. Ich hoffe ich konnte euch mein Problem gut nahbringen. Ich weiß, dass es schon ähnliche Posts gab, aber so wie ich das damit probiert habe hat es nicht geklappt. LG

public class Bomberman extends Actor
{ 
 public void ExplUpgrade()
        {   
            int exup;
            exup = 1;
            while(ExplosionsUpgradeAufFeld())
            {
                ExplosionsUpgrade exploupgrade = (ExplosionsUpgrade)this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class);
                if(exploupgrade != null)
                {
                    this.getWorld().removeObject(exploupgrade);
                    if(exup < 5) 
                    {   
                        exup ++;
                    }
                }
            }
        }   
        
    
        public void Explosionen()
        {
             int te;
             int aX = this.getX();
             int aY = this.getY();
             int exup;
             te = 25;
             exup = 1;
             
             ExplosionZw explosionzw = new ExplosionZw();
             ExplosionZwOU explosionzwou = new ExplosionZwOU();
             ExplosionZw1 explosionzw1 = new ExplosionZw1();
             ExplosionZw2 explosionzw2 = new ExplosionZw2();
           
             Explosion explosion = new Explosion();
             ExplosionLinks explosionl = new ExplosionLinks();
             ExplosionOben explosiono = new ExplosionOben();
             ExplosionRechts explosionr = new ExplosionRechts();
             ExplosionUnten explosionu = new ExplosionUnten();
           
             Bombe bombe = new Bombe();
            
            
             ExplosionsUpgrade exploupgrade = (ExplosionsUpgrade)this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class);
            
            
             ExplUpgrade();
             
             if(exup == 1)
             {
                   this.getWorld().addObject(bombe, aX, aY);
                   
                   Greenfoot.delay(te);
                    
                   this.getWorld().removeObject(bombe);
                   this.getWorld().addObject(explosion, this.getX(),this.getY());
                   this.getWorld().addObject(explosionl,getX() - 1, getY());
                   this.getWorld().addObject(explosiono,getX() , getY() - 1);
                   this.getWorld().addObject(explosionr,getX() + 1, getY());
                   this.getWorld().addObject(explosionu,getX() , getY() + 1);
                    
                    
                   Greenfoot.delay(10);
                   
                    this.getWorld().removeObject(explosionl);
                    this.getWorld().removeObject(explosiono);
                    this.getWorld().removeObject(explosionr);
                    this.getWorld().removeObject(explosionu);
                    this.getWorld().removeObject(explosion);
              }
             if(exup == 2)
             {
                   this.getWorld().addObject(bombe, aX, aY);
                   
                   Greenfoot.delay(te);
                   
                   this.getWorld().removeObject(bombe);
                   this.getWorld().addObject(explosion, this.getX(),this.getY());
                   this.getWorld().addObject(explosionzw1, getX() -1, getY());
                   this.getWorld().addObject(explosionzw, getX() +1, getY());
                   this.getWorld().addObject(explosionzw2, getX(), getY()-1);
                   this.getWorld().addObject(explosionzwou, getX(), getY()+1);
                   this.getWorld().addObject(explosionl,getX() - 2, getY());
                   this.getWorld().addObject(explosiono,getX() , getY() - 2);
                   this.getWorld().addObject(explosionr,getX() + 2, getY());
                   this.getWorld().addObject(explosionu,getX() , getY() + 2);
                    
                   Greenfoot.delay(10);
                   
                   this.getWorld().removeObject(explosionl);
                   this.getWorld().removeObject(explosiono);
                   this.getWorld().removeObject(explosionr);
                   this.getWorld().removeObject(explosionu);
                   this.getWorld().removeObject(explosion);
                   this.getWorld().removeObject(explosionzw1);
                   this.getWorld().removeObject(explosionzw);
                   this.getWorld().removeObject(explosionzw2);
                   this.getWorld().removeObject(explosionzwou);
                   
                }
    }
Asenoju Asenoju

2018/10/7

#
Ich würde dir empfehlen die "exup" Variable einfach zu einem Attribut der Klasse Bomberman zu machen, d.h "int exup" über den Konstruktor zu schreiben. Damit kann jede Methode der Klasse auf "exup" zugreifen. Ich hoffe ich habe dein Problem richtig verstanden, wenn nicht, einfach bescheid geben.
MrExamined MrExamined

2018/10/8

#
Vielen Dank für die Antwort , aber leider hat es bei mir nicht geholfen. Mein Problem war, dass ich mich auf den Wert der "exup" Variable zugreifen möchte. Dieser soll aber in der "ExplUpgrade()" gesezt werden, aber bei jedem mal wenn die Bedingung "ExplosionsUpgradeAufFeld()" erfüllt ist, um 1 steigen. Und den Wert brauch ich dann in "Explosionen()"
Super_Hippo Super_Hippo

2018/10/8

#
Wie hast du denn seinen Vorschlag umgesetzt? (Abgesehen davon, dass du keinen Konstruktor hast, auf den du dich beziehen kannst.) Wieso hast du für jede Explosion eine eigene Klasse?? Das mit dem Delay ist höchstwahrscheinlich auch nicht das, was du wirklich möchtest.
Asenoju Asenoju

2018/10/8

#
Ach, sorry, gestern war es spät. Schreib mal deinen Code folgendermaßen:
public class Bomberman extends Actor
{
int exup;
//Hier dann deine restlichen Methoden. Aus ExplUpgrade() die Zeile "int exup;" löschen.
}
Ich verstehe zwar allgemein deine Umsetzung nicht ganz, aber damit kann jede Methode auf "exup" zugreifen.
danpost danpost

2018/10/8

#
Wo ist deine Methode ExplosionsUpgradeAufFeld? Was machen es? (besides return a boolean value)
MrExamined MrExamined

2018/10/10

#
Tut mir leid, dass ich euch nerve, bin neu in Greenfoot und Coding. Das ist "ExplosionsUpgradeAufFeld", es wird hier nur überprüft, ob ein Objekt "ExplosionsUpgrade" da ist, wo sich meine Figur befindet.
public boolean ExplosionsUpgradeAufFeld()
    {
        if (this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class)!= null)
        {
           return true;     
        } 
        else
        {
            return false;   
        }
    }
Jede Explosion hat seine eigene Klasse, damit ich die ganzen Bilder für die Richtung der Explosion besser setzen kann und später dann auch reinbringen kann, dass wenn die Klassen auf dem Feld einer Wand, dann soll sie kaputt gehen. Und ich habe auch noch das Problem, dass jedesmal, wenn meine Figur eine Bombe setzt, dass sie sich dann nicht bewegen kann. Ich weiß, dass das daran liegt, dass ich gesagt habe, wenn die Taste gedrückt ist, dann soll die Aktion Bombe legen ausgeführt werden. Ich müsste das irgendwie hinbekommen, dass man während die Aktion ausgeführt wird, man noch Tasten drücken kann. Vielen Dank schonmal, dass ihr euch so intensiv damit beschäftigt. Hier ist jetzt auch nochmal mein ganzer Code:

import greenfoot.*; 
import java.util.*;
import java.util.List;
public class Bomberman extends Actor
{
    int exup;
    
    
        public Bomberman()
        {
        }
       
        public void BombeAblegen()
        {
            int aX = this.getX();
            int aY = this.getY();
            Bombe bombe = new Bombe();
            this.getWorld().addObject(bombe, aX, aY);
        }
        
        public void ExplUpgrade()
        {   
            exup = 1;
            while(ExplosionsUpgradeAufFeld())
            {
                ExplosionsUpgrade exploupgrade = (ExplosionsUpgrade)this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class);
                if(exploupgrade != null)
                {
                    this.getWorld().removeObject(exploupgrade);
                    if(exup < 5) 
                    {   
                        exup ++;
                    }
                }
            }
        }   
        
    
        public void Explosionen()
        {
             int te;
             int aX = this.getX();
             int aY = this.getY();
             
             te = 25;
             
             
             ExplosionZw explosionzw = new ExplosionZw();
             ExplosionZwOU explosionzwou = new ExplosionZwOU();
             ExplosionZw1 explosionzw1 = new ExplosionZw1();
             ExplosionZw2 explosionzw2 = new ExplosionZw2();
           
             Explosion explosion = new Explosion();
             ExplosionLinks explosionl = new ExplosionLinks();
             ExplosionOben explosiono = new ExplosionOben();
             ExplosionRechts explosionr = new ExplosionRechts();
             ExplosionUnten explosionu = new ExplosionUnten();
           
             Bombe bombe = new Bombe();
            
            
             ExplosionsUpgrade exploupgrade = (ExplosionsUpgrade)this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class);
            
            
             ExplUpgrade();
             
             if(exup == 1)
             {
                   this.getWorld().addObject(bombe, aX, aY);
                   
                   Greenfoot.delay(te);
                    
                   this.getWorld().removeObject(bombe);
                   this.getWorld().addObject(explosion, this.getX(),this.getY());
                   this.getWorld().addObject(explosionl,getX() - 1, getY());
                   this.getWorld().addObject(explosiono,getX() , getY() - 1);
                   this.getWorld().addObject(explosionr,getX() + 1, getY());
                   this.getWorld().addObject(explosionu,getX() , getY() + 1);
                    
                    
                   Greenfoot.delay(10);
                   
                    this.getWorld().removeObject(explosionl);
                    this.getWorld().removeObject(explosiono);
                    this.getWorld().removeObject(explosionr);
                    this.getWorld().removeObject(explosionu);
                    this.getWorld().removeObject(explosion);
              }
             if(exup == 2)
             {
                   this.getWorld().addObject(bombe, aX, aY);
                   
                   Greenfoot.delay(te);
                   
                   this.getWorld().removeObject(bombe);
                   this.getWorld().addObject(explosion, this.getX(),this.getY());
                   this.getWorld().addObject(explosionzw1, getX() -1, getY());
                   this.getWorld().addObject(explosionzw, getX() +1, getY());
                   this.getWorld().addObject(explosionzw2, getX(), getY()-1);
                   this.getWorld().addObject(explosionzwou, getX(), getY()+1);
                   this.getWorld().addObject(explosionl,getX() - 2, getY());
                   this.getWorld().addObject(explosiono,getX() , getY() - 2);
                   this.getWorld().addObject(explosionr,getX() + 2, getY());
                   this.getWorld().addObject(explosionu,getX() , getY() + 2);
                    
                   Greenfoot.delay(10);
                   
                   this.getWorld().removeObject(explosionl);
                   this.getWorld().removeObject(explosiono);
                   this.getWorld().removeObject(explosionr);
                   this.getWorld().removeObject(explosionu);
                   this.getWorld().removeObject(explosion);
                   this.getWorld().removeObject(explosionzw1);
                   this.getWorld().removeObject(explosionzw);
                   this.getWorld().removeObject(explosionzw2);
                   this.getWorld().removeObject(explosionzwou);
                   
                }
    }
        
    public void ExplosionEntfernen()
    {
           Explosion explosion = new Explosion();
           ExplosionLinks explosionl = new ExplosionLinks();
           ExplosionOben explosiono = new ExplosionOben();
           ExplosionRechts explosionr = new ExplosionRechts();
           ExplosionUnten explosionu = new ExplosionUnten();
           
                    this.getWorld().removeObject(explosion);
                    this.getWorld().removeObject(explosionl);
                    this.getWorld().removeObject(explosionr);
                    this.getWorld().removeObject(explosiono);
                    this.getWorld().removeObject(explosionu);
                    
    }
    
    public void ExplosionsstaerkeA()
    {
           Explosion explosion = new Explosion();
           ExplosionLinks explosionl = new ExplosionLinks();
           ExplosionOben explosiono = new ExplosionOben();
           ExplosionRechts explosionr = new ExplosionRechts();
           ExplosionUnten explosionu = new ExplosionUnten();
           
                    this.getWorld().addObject(explosion, this.getX(),this.getY());
                    this.getWorld().addObject(explosionl,getX() - 1, getY());
                    this.getWorld().addObject(explosiono,getX() , getY() - 1);
                    this.getWorld().addObject(explosionr,getX() + 1, getY());
                    this.getWorld().addObject(explosionu,getX() , getY() + 1);
                    
                    
                    
    }
        
    public void ExplosionsstaerkeB()
    {
           ExplosionZw explosionzw = new ExplosionZw();
           ExplosionZwOU explosionzwou = new ExplosionZwOU();
           ExplosionZw1 explosionzw1 = new ExplosionZw1();
           ExplosionZw2 explosionzw2 = new ExplosionZw2();
           
           Explosion explosion = new Explosion();
           ExplosionLinks explosionl = new ExplosionLinks();
           ExplosionOben explosiono = new ExplosionOben();
           ExplosionRechts explosionr = new ExplosionRechts();
           ExplosionUnten explosionu = new ExplosionUnten();
           
                    this.getWorld().addObject(explosion, this.getX(),this.getY());
                    this.getWorld().addObject(explosionl,getX() - 2, getY());
                    this.getWorld().addObject(explosiono,getX() , getY() - 2);
                    this.getWorld().addObject(explosionr,getX() + 2, getY());
                    this.getWorld().addObject(explosionu,getX() , getY() + 2);
                    
                    this.getWorld().addObject(explosionzw,getX() - 1, getY());
                    this.getWorld().addObject(explosionzw2,getX() , getY() - 1);
                    this.getWorld().addObject(explosionzw1,getX() + 1, getY());
                    this.getWorld().addObject(explosionzwou,getX() , getY() + 1);
    }
        
    
        
        int leben;
        public void Tod()
        {
            
        
        }
    
    public void bewegen()
    {
        int lRichtung = this.getRotation();
            
        if (this.kannBewegen())
        {   
            switch(lRichtung)
            {
            case 0 :
                this.setLocation(getX() + 1, getY());
                break;
            case 90 :
                this.setLocation(getX(), getY()+1);
                break;
            case 180 :
                this.setLocation(getX()-1, getY());
                break;
            case 270 :
                this.setLocation(getX(), getY()-1);
                break;
            }
            
            Greenfoot.delay(1);
        }
    }

    
    public void dreheRechts()
    {
            this.setRotation((getRotation()+90) % 360);
            Greenfoot.delay(1);
    }
    
        
    
     
    private void dreheLinks()
    {
            this.setRotation((getRotation()+270) % 360);
            Greenfoot.delay(1);
    }
    
   
    private boolean kannBewegen()
    {   if(wandVorne())
        {
            return false;
        }
        if (this.getRotation() == 0 && this.getX() == this.getWorld().getWidth()-1)
        {
            return false;   
        }                   
        if (this.getRotation() == 90 && this.getY() == this.getWorld().getHeight()-1)
        {
            return false;   
        }        
        if (this.getRotation() == 180 && this.getX() == 0)
        {
            return false;   
        }       
        if (this.getRotation() == 270 && this.getY() == 0)
        {
            return false;   
        }         
        return true;
        
    }
    
    public boolean wandVorne()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     } 
     
     private boolean wandRechts()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     private boolean wandLinks()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     private boolean wandHinten()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null) 
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
        }
     
    
    private boolean rechts()
    {
        if(this.getRotation()==0)
        {
            return true;
        }
        else
        {
            return false;   
        }
    }
    
    private boolean links()
    {
        if(this.getRotation()==180)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    
    private boolean anGrenze()
    {
        if (this.getX()+1>=this.getWorld().getWidth() || this.getX()<=0)  
        {return true;}

        if (this.getY()+1>=this.getWorld().getHeight() || this.getY()<=0)  
        {return true;}
        
        return false;
        
    }
    
    public boolean ExplosionsUpgradeAufFeld()
    {
        if (this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class)!= null)
        {
           return true;     
        } 
        else
        {
            return false;   
        }
    }
    
    
    
    
    
    
    public void act()
    {
    
            if(Greenfoot.isKeyDown("left"))
            {
                    setImage("Bomberman-Seite01.gif");
                    Greenfoot.delay(1);
                    if(!wandHinten())
                    {  
                        setLocation(getX() - 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplUpgrade();
            }
            else if(Greenfoot.isKeyDown("right"))
            {
                    setImage("Bomberman-Seite02.gif");
                    Greenfoot.delay(1);
                    if(!wandVorne())
                    {
                        setLocation(getX() + 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplUpgrade();
            }
            else if(Greenfoot.isKeyDown("up"))
            {
                    setImage("Bomberman-Hinten.gif");
                    Greenfoot.delay(1);
                    if(!wandLinks())
                    { 
                        setLocation(getX(), getY() - 1);
                    }
                    Greenfoot.delay(1);
                    ExplUpgrade();
            }
            else if(Greenfoot.isKeyDown("down"))
            {
                    setImage("Bomberman-Vorne.gif");
                    Greenfoot.delay(1);
                    if(!wandRechts())
                    {
                        setLocation(getX(), getY() + 1);
                    }
                    Greenfoot.delay(1);
                    ExplUpgrade();
            }
            
            if(Greenfoot.isKeyDown("a"))
            {
                Explosionen();
            }
        }
        
}   

Super_Hippo Super_Hippo

2018/10/10

#
Bzgl. des "Greenfoot.delay"s. Wenn du das nutzt, pausiert das gesamte Spiel. Währenddessen passiert also gar nichts. Du brauchst keine eigene Klasse für jede Explosion. Wenn jede "Richtung" ein anderes Bild erhalten soll, dann kannst du einfach einen Parameter übergeben. Soll es dasselbe Bild sein und nur gedreht, dann kann es auch einfach so aussehen:
getWorld().addObject(new Explosion(), getX(), getY()); //Explosion an der Stelle der Bombe
for (int i=0; i<4; i++) //Explosionen in die vier Richtungen
{
    Actor explosion = new Explosion();
    getWorld().addObject(explosion, getX(), getY());
    explosion.setRotation(90*i);
    explosion.move(1);
}
Das kannst du natürlich auch erweitern, wenn dein Bomberman Reichweitenupgrades erhalten kann und die Reichweite in einer Variable namens Reichweite gespeichert wird:
getWorld().addObject(new Explosion(), getX(), getY()); //Explosion an der Stelle der Bombe
for (int i=0; i<4; i++) //Explosionen in die vier Richtungen
{
    for (int r=1; r<reichweite+1; r++)
    {
        Actor explosion = new Explosion();
        getWorld().addObject(explosion, getX(), getY());
        explosion.setRotation(90*i);
        explosion.move(r);
    }
}
Anstatt die Explosionen in der Bomberman-Klasse zu erstellen und sie nach der Erstellung direkt wieder zu löschen (und es nur mit Greenfoot.delay zu pausieren), solltest du Bomberman nur eine Bombe erstellen lassen und die Bombe regelt die Erstellung der Explosion. Die Explosion selbst sorgt wiederum dafür, dass die zum richtigen Zeitpunkt entfernt wird.
//Bomberman
//falls richtige Taste gedrückt und weniger als maximale Anzahl gleichzeitig liegender Bomben gelegt
{
    getWorld().addObject(new Bombe(), getX(), getY());
}
//Bombe
private int timer = 300; //je höher, desto länger dauert es bis zur Explosion der Bombe
public void act()
{
    if (--timer==0)
    {
        //siehe Code oben
    }
}
//Explosion
private int timer = 50; //je höher, desto länger bleibt die Explosion sichtbar
public void act()
{
    if (--timer == 0)
    {
        Wand wand = (Wand) getOneIntersectingObject(Wand.class);
        if (wand != null)
        {
            wand.zerstören(); //oder ähnliches. In der Methode kann wenn gewünscht ein Power-Up an der Stelle der Wand erstellt und die Wand entfernt werden
        }
        //hier ähnliches Vorgehen für Bomberman, Gegner, andere Bomben und Ähnliches
        //… alternativ auch nach außerhalb dieser Methode, je nachdem, wie du das handhaben möchtest
        getWorld().removeObject(this); //Explosion entfernen
    }
}
MrExamined MrExamined

2018/10/13

#
Danke, dass hat sehr geholfen. Jetzt habe ich nur das Problem, dass meine Figur stirbt, auch wenn sie ein Block von der Explosion entfernt ist, also eigentlich in Sicherheit steht. Und die Explosion sollte eigentlich unterschieldiche Bilder haben, heißt im Zentrum eins, Rechts, Links, Oben, Unten und die Zwischenstücke, falls die Explosion über zwei Felder nach außerhalb des Zentrums geht. Und ich weiß jetzt nicht wo ich einfügen soll, dass das Objekt Bombe auch wieder verschwindet. Code-Bombe
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Bombe extends Actor
{
    private int timer = 10; 
    private int reichweite = 1;
    public void act()
    {
        if (--timer==0)
        {
            getWorld().addObject(new Explosion(), getX(), getY()); 
            
            for (int i=0; i<4; i++) 
            {
                for (int r=1; r<reichweite+1; r++)
                {
                    Actor explosion = new Explosion();
                    getWorld().addObject(explosion, getX(), getY());
                    explosion.setRotation(90*i);
                    explosion.move(r);
                }
            }
            
        }
    }
}
Code-Explosion
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Explosion here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Explosion extends Actor
{
    /**
     * Act - do whatever the Explosion wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    private int timer = 8;
   
    public void act()
   {
    if (--timer == 0)
    {
        Wand wand = (Wand) getOneIntersectingObject(Wand.class);
        if (wand != null)
        {
            this.getWorld().removeObject(wand);
        }
        
        Bomberman bomberman = (Bomberman) getOneIntersectingObject(Bomberman.class);
        if (bomberman != null)
        {
            this.getWorld().removeObject(bomberman);
        }
        getWorld().removeObject(this);
    }
  }   
}
Code-Bomberman
import greenfoot.*; 
import java.util.*;
import java.util.List;
public class Bomberman extends Actor
{
   
    public Bomberman()
    {
    }
    
    public void bewegen()
    {
        int lRichtung = this.getRotation();
            
        if (this.kannBewegen())
        {   
            switch(lRichtung)
            {
            case 0 :
                this.setLocation(getX() + 1, getY());
                break;
            case 90 :
                this.setLocation(getX(), getY()+1);
                break;
            case 180 :
                this.setLocation(getX()-1, getY());
                break;
            case 270 :
                this.setLocation(getX(), getY()-1);
                break;
            }
            
            Greenfoot.delay(1);
        }
    }

    
    
    public void dreheRechts()
    {
            this.setRotation((getRotation()+90) % 360);
            Greenfoot.delay(1);
    }
    
        
    
     
    private void dreheLinks()
    {
            this.setRotation((getRotation()+270) % 360);
            Greenfoot.delay(1);
    }
    
   
    private boolean kannBewegen()
    {   
        if(wandfVorne())
        {
            return false;
        }
        
        if(wandVorne())
        {
            return false;
        }
        if (this.getRotation() == 0 && this.getX() == this.getWorld().getWidth()-1)
        {
            return false;   
        }                   
        if (this.getRotation() == 90 && this.getY() == this.getWorld().getHeight()-1)
        {
            return false;   
        }        
        if (this.getRotation() == 180 && this.getX() == 0)
        {
            return false;   
        }       
        if (this.getRotation() == 270 && this.getY() == 0)
        {
            return false;   
        }         
        return true;
        
    }
    
    public boolean wandfVorne()
    {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, 1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(-1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, -1, WandF.class)!= null)
         {
            return true;     
         }
         
         return false;
    }
    
    public boolean wandVorne()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     } 
     private boolean wandfRechts()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, 1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(-1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, -1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     
     private boolean wandRechts()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     private boolean wandfLinks()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, -1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, 1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(-1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     private boolean wandLinks()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     private boolean wandfHinten()
     {
        int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(-1, 0, WandF.class)!= null) 
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, -1, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(1, 0, WandF.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, 1, WandF.class)!= null)
         {
            return true;     
         }
         
         return false;
     }
     
     private boolean wandHinten()
     {
         int lRichtung = this.getRotation();
         
         if (lRichtung == 0 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null) 
         {
            return true;     
         }
         
         if (lRichtung == 90 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 180 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
         {
            return true;     
         }
         
         if (lRichtung == 270 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
         {
            return true;     
         }
         
         return false;
        }
     
    
    private boolean rechts()
    {
        if(this.getRotation()==0)
        {
            return true;
        }
        else
        {
            return false;   
        }
    }
    
    private boolean links()
    {
        if(this.getRotation()==180)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    
    private boolean anGrenze()
    {
        if (this.getX()+1>=this.getWorld().getWidth() || this.getX()<=0)  
        {return true;}

        if (this.getY()+1>=this.getWorld().getHeight() || this.getY()<=0)  
        {return true;}
        
        return false;
        
    }
    
    public boolean ExplosionsUpgradeAufFeld()
    {
        if (this.getOneObjectAtOffset(0, 0, ExplosionsUpgrade.class)!= null)
        {
           return true;     
        } 
        else
        {
            return false;   
        }
    }
    
    
    
    
    
    
    public void act()   
    
    
    {
            
            
            if(Greenfoot.isKeyDown("left"))
            {
                    setImage("Bomberman-Seite01.gif");
                    Greenfoot.delay(1);
                    if(!wandHinten()&&(!wandfHinten()))
                    {  
                        setLocation(getX() - 1, getY());
                    }
                    Greenfoot.delay(1);
                    
            }
            else if(Greenfoot.isKeyDown("right"))
            {
                    setImage("Bomberman-Seite02.gif");
                    Greenfoot.delay(1);
                    if(!wandVorne()&&(!wandfVorne()))
                    {
                        setLocation(getX() + 1, getY());
                    }
                    Greenfoot.delay(1);
                    
            }
            else if(Greenfoot.isKeyDown("up"))
            {
                    setImage("Bomberman-Hinten.gif");
                    Greenfoot.delay(1);
                    if(!wandLinks()&&(!wandfLinks()))
                    { 
                        setLocation(getX(), getY() - 1);
                    }
                    Greenfoot.delay(1);
                    
            }
            else if(Greenfoot.isKeyDown("down"))
            {
                    setImage("Bomberman-Vorne.gif");
                    Greenfoot.delay(1);
                    if(!wandRechts()&&(!wandfRechts()))
                    {
                        setLocation(getX(), getY() + 1);
                    }
                    Greenfoot.delay(1);
                    
            }
            else if(Greenfoot.isKeyDown("space"))
            {
                
                {
                    getWorld().addObject(new Bombe(), getX(), getY());
                }
            }
            
            else if(Greenfoot.isKeyDown("enter"))
            {
                reset();
            }
        }
        
    private void reset()
        {
            Wand wand = new Wand();
            WandF wandf = new WandF();
            DSpielbegrenzung dspiel = new DSpielbegrenzung();
            Bomberman bomberman = new Bomberman();
            
            this.setLocation(1,1);
            
            getWorld().addObject(new DSpielbegrenzung(), 0, 0);
            getWorld().addObject(new DSpielbegrenzung(), 0, 1);
            getWorld().addObject(new DSpielbegrenzung(), 0, 2);
            getWorld().addObject(new DSpielbegrenzung(), 0, 3);
            getWorld().addObject(new DSpielbegrenzung(), 0, 4);
            getWorld().addObject(new DSpielbegrenzung(), 0, 5);
            getWorld().addObject(new DSpielbegrenzung(), 0, 6);
            getWorld().addObject(new DSpielbegrenzung(), 0, 7);
            getWorld().addObject(new DSpielbegrenzung(), 0, 8);
            getWorld().addObject(new DSpielbegrenzung(), 0, 9);
            getWorld().addObject(new DSpielbegrenzung(), 0, 10);
            getWorld().addObject(new DSpielbegrenzung(), 0, 11);
            
            getWorld().addObject(new DSpielbegrenzung(), 1, 0);
            getWorld().addObject(new DSpielbegrenzung(), 2, 0);
            getWorld().addObject(new DSpielbegrenzung(), 3, 0);
            getWorld().addObject(new DSpielbegrenzung(), 4, 0);
            getWorld().addObject(new DSpielbegrenzung(), 5, 0);
            getWorld().addObject(new DSpielbegrenzung(), 6, 0);
            getWorld().addObject(new DSpielbegrenzung(), 7, 0);
            getWorld().addObject(new DSpielbegrenzung(), 8, 0);
            getWorld().addObject(new DSpielbegrenzung(), 9, 0);
            getWorld().addObject(new DSpielbegrenzung(), 10, 0);
            getWorld().addObject(new DSpielbegrenzung(), 11, 0);
            getWorld().addObject(new DSpielbegrenzung(), 12, 0);
            getWorld().addObject(new DSpielbegrenzung(), 13, 0);
            getWorld().addObject(new DSpielbegrenzung(), 14, 0);
            getWorld().addObject(new DSpielbegrenzung(), 15, 0);
            
            getWorld().addObject(new DSpielbegrenzung(), 15, 1);
            getWorld().addObject(new DSpielbegrenzung(), 15, 2);
            getWorld().addObject(new DSpielbegrenzung(), 15, 3);
            getWorld().addObject(new DSpielbegrenzung(), 15, 4);
            getWorld().addObject(new DSpielbegrenzung(), 15, 5);
            getWorld().addObject(new DSpielbegrenzung(), 15, 6);
            getWorld().addObject(new DSpielbegrenzung(), 15, 7);
            getWorld().addObject(new DSpielbegrenzung(), 15, 8);
            getWorld().addObject(new DSpielbegrenzung(), 15, 9);
            getWorld().addObject(new DSpielbegrenzung(), 15, 10);
            getWorld().addObject(new DSpielbegrenzung(), 15, 11);
            
            getWorld().addObject(new DSpielbegrenzung(), 1, 11);
            getWorld().addObject(new DSpielbegrenzung(), 2, 11);
            getWorld().addObject(new DSpielbegrenzung(), 3, 11);
            getWorld().addObject(new DSpielbegrenzung(), 4, 11);
            getWorld().addObject(new DSpielbegrenzung(), 5, 11);
            getWorld().addObject(new DSpielbegrenzung(), 6, 11);
            getWorld().addObject(new DSpielbegrenzung(), 7, 11);
            getWorld().addObject(new DSpielbegrenzung(), 8, 11);
            getWorld().addObject(new DSpielbegrenzung(), 9, 11);
            getWorld().addObject(new DSpielbegrenzung(), 10, 11);
            getWorld().addObject(new DSpielbegrenzung(), 11, 11);
            getWorld().addObject(new DSpielbegrenzung(), 12, 11);
            getWorld().addObject(new DSpielbegrenzung(), 13, 11);
            getWorld().addObject(new DSpielbegrenzung(), 14, 11);
            
            getWorld().addObject(new WandF(), 2, 2);
            getWorld().addObject(new WandF(), 2, 4);
            getWorld().addObject(new WandF(), 2, 6);
            getWorld().addObject(new WandF(), 2, 8);
            getWorld().addObject(new WandF(), 4, 2);
            getWorld().addObject(new WandF(), 4, 4);
            getWorld().addObject(new WandF(), 4, 6);
            getWorld().addObject(new WandF(), 4, 8);
            getWorld().addObject(new WandF(), 6, 2);
            getWorld().addObject(new WandF(), 6, 4);
            getWorld().addObject(new WandF(), 6, 6);
            getWorld().addObject(new WandF(), 6, 8);
            getWorld().addObject(new WandF(), 8, 2);
            getWorld().addObject(new WandF(), 8, 4);
            getWorld().addObject(new WandF(), 8, 6);
            getWorld().addObject(new WandF(), 8, 8);
            getWorld().addObject(new WandF(), 10, 2);
            getWorld().addObject(new WandF(), 10, 4);
            getWorld().addObject(new WandF(), 10, 6);
            getWorld().addObject(new WandF(), 10, 8);
            getWorld().addObject(new WandF(), 12, 2);
            getWorld().addObject(new WandF(), 12, 4);
            getWorld().addObject(new WandF(), 12, 6);
            getWorld().addObject(new WandF(), 12, 8);
        }      
            
            
}   
    
Super_Hippo Super_Hippo

2018/10/14

#
In der Bombe-Klasse in Zeile 23 kannst du einfügen:
getWorld().removeObject(this);
Das mit dem Detektieren ein Feld entfernt kann daran liegen, dass das Bild von Bomberman größer ist als es scheint (z. B. transparente oder weiße Ränder hat). Dadurch, dass deine Welt allerdings eine Zellengröße von über 1 hat, könntest du das Problem vermutlich damit beheben, dass du "getOneObjectAtOffset" nutzt. Nochmal ein paar Dinge: Nutze kein "delay" im Gameplay. Erstelle die Welt in deiner Welt-Klasse (also keine reset-Methode in der Bomberman-Klasse, die die Welt erstellt). Nutze for-Schleifen, damit du nicht so viele Zeilen Code zum Erstellen der Welt benötigst. Du brauchst vor einen Methodennamen nicht immer "this" zu schreiben. Du machst es oft, aber auch alles andere als immer. Wozu also? Nutze keine doppelten Klassen, die dasselbe oder fast dasselbe sind (Wand und WandF etc.). Diese ganzen Methoden, die booleans zurückgeben, sind entweder nicht wirklich nötig und wenn du die so haben möchtest, können sie vereinfacht werden, sodass sie nicht den Großteil des Codes ausmachen. Beispiel:
    private boolean rechts()
    {
        if(this.getRotation()==0)
        {
            return true;
        }
        else
        {
            return false;   
        }
    }
ist identisch mit:
private boolean rechts()
{
    return getRotation()==0;
}
Auch so was wie "dreheRechts" ist nichts anderes als "turn(90)". Für die verschiedenen Bilder für die Explosionen. Das könntest du so machen:
getWorld().addObject(new Explosion(0, reichtweite), getX(), getY()); // <-- geändert
for (int i=0; i<4; i++)
{
    for (int r=1; r<reichweite+1; r++)
    {
        Actor explosion = new Explosion(r, reichtweite); //<-- geändert
        getWorld().addObject(explosion, getX(), getY());
        explosion.setRotation(90*i);
        explosion.move(r);
    }
}
Und in der Explosion-Klasse:
public Explosion(int imgTyp, int rw)
{
    if (imgTyp==0) setImage("explosion-zentral.png");
    else if (imgTyp==rw) setImage("explosion-ende.png");
    else setImage("explosion-mittig.png");
}
Die Reichweite solltest du ebenso auch vom Bomberman an die Explosion weitergeben und sie nicht in der Bombe initialisieren. Also Bomberman hat eine Variable mit seiner Reichweite, die erhöht wird, wenn er ein Reichweiten-PowerUp einsammelt. Legt er eine Bombe, teilt er der Bombe mit, dass diese später bitte mit seiner jetzigen Reichweite explodieren soll.
getWorld().addObject(new Bombe(reichtweite), getX(), getY());
public Bombe(int rw)
{
    reichweite = rw;
}
MrExamined MrExamined

4 days ago

#
Danke für die Antwort, jetzt verschwindet die Bombe. Allerdings funktioniert bei mir das nicht ganz mit dem ExplosionsUpgrade. Ich scheitere daran, dass der Wert für die Reichweite nicht übertragen wird, außerdem funktioniert gerade auch irgendwie nicht mehr, dass ich das ExplosionsUpgrade entferne nach betreten des Feldes. Bombe:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Bombe extends Actor
{
    private int timer = 10; 
    private int reichweite = 1;
    public int rw;
    public void act()
    {
        if (--timer==0)
        {
            getWorld().addObject(new Explosion(0, reichweite), getX(), getY()); 
            for (int i=0; i<4; i++)
            {
                for (int r=1; r<reichweite+1; r++)
                {
                    Actor explosion = new Explosion(r, reichweite);
                    explosion.setRotation(90*i);
                    explosion.move(r);
                }
            }
            
            getWorld().removeObject(this);
        }
    }
}
Explosion:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Explosion here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Explosion extends Actor
{
   public Explosion(int bildTyp, int rw)
      {
          if(bildTyp==0) 
            setImage("ExplosionKern.gif");
          else if(bildTyp==rw) setImage ("ExplosionRechts.gif");
          else setImage("Zwischen.gif");
        }
    private int timer = 8;
   
    public void act()
   {
    if (--timer == 0)
    {
        Wand wand = (Wand) getOneIntersectingObject(Wand.class);
        if (wand != null)
        {
            this.getWorld().removeObject(wand);
        }
        
        Bomberman bomberman = (Bomberman) getOneIntersectingObject(Bomberman.class);
        if (this.getOneObjectAtOffset(0,0,Bomberman.class) != null)
        {
            this.getWorld().removeObject(bomberman);
        }
        getWorld().removeObject(this);
        
    }
  }   
}
Bomberman(nur der wichtige Teil):
MrExamined MrExamined

4 days ago

#
public int reichweite = 1;
    public void ExplosionsUpgrades()
    {
        ExplosionsUpgrade explo = new ExplosionsUpgrade();
        if(ExplosionsUpgradeAufFeld())
            {
                if(true)
                {
                    getWorld().removeObject(explo);
                    reichweite++;
                }
            }
    }
und
public void act()   
    
    
    {
            
            if(Greenfoot.isKeyDown("left"))
            {
                    setImage("Bomberman-Seite01.gif");
                    Greenfoot.delay(1);
                    if(!wandHinten()&&!wandfHinten()&&!DSpielbegrenzungHinten())
                    {  
                        setLocation(getX() - 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("right"))
            {
                    setImage("Bomberman-Seite02.gif");
                    Greenfoot.delay(1);
                    if(!wandVorne()&&!wandfVorne()&&!DSpielbegrenzungVorne())
                    {
                        setLocation(getX() + 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("up"))
            {
                    setImage("Bomberman-Hinten.gif");
                    Greenfoot.delay(1);
                    if(!wandLinks()&&!wandfLinks()&&!DSpielbegrenzungLinks())
                    { 
                        setLocation(getX(), getY() - 1);
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("down"))
            { 
                    setImage("Bomberman-Vorne.gif");
                    Greenfoot.delay(1);
                    if(!wandRechts()&&!wandfRechts()&&!DSpielbegrenzungRechts())
                    {
                        setLocation(getX(), getY() + 1);
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("space"))
            {
                
                {
                    getWorld().addObject(new Bombe(), getX(), getY());
                }
            }
        }
Super_Hippo Super_Hippo

4 days ago

#
Ähm... also in deiner ExplosionsUpgrades-Methode erstellst du ein NEUES ExplosionsUpgrade, das du aus der Welt entfernst (bevor es überhaupt in irgendeiner Welt ist), wenn die ExplosionsUpgradeAufFeld-Methode true zurückgibst. Das sollte eigentlich etwas so aussehen:
if (isTouching(ExplosionsUpgrade.class))
{
    removeTouching(ExplosionsUpgrade.class);
    reichweite++;
}
Falls das nicht funktioniert, dann das:
Actor e = getOneObjectAtOffset(ExplosionsUpgrade.class);
if (e != null)
{
    getWorld().removeObject(e);
    reichweite++;
}
Dass mit dem Übergeben der Reichweite hast du nicht implementiert. Schaue dir nochmal das Ende meiner letzten Nachricht an. Das bekommst du hin.
MrExamined MrExamined

2 days ago

#
Ich habe jetzt das so implementiert, wie du das in deinem vorheriegen Post geschrieben hast, aber das klapt nicht. Das Problem liegt allerdings nicht in Explosion. Bombe:

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Bombe extends Actor
{
    private int timer = 10; 
    int reichweite;
    public Bombe(int rw)
    {
        reichweite = rw;
    }
    public void act()
    {
        if (--timer==0)
        {
            getWorld().addObject(new Explosion(0, reichweite), getX(), getY()); 
            for (int i=0; i<4; i++)
            {
                for (int r=2; r<reichweite+1; r++)
                {
                    Actor explosion = new Explosion(r, reichweite);
                    explosion.setRotation(90*i);
                    explosion.move(r);
                }
            }
            
            getWorld().removeObject(this);
        }
    }
}

Bomberman

public void act()   
    
    
    {
            
            if(Greenfoot.isKeyDown("left"))
            {
                    setImage("Bomberman-Seite01.gif");
                    Greenfoot.delay(1);
                    if(!wandHinten()&&!wandfHinten()&&!DSpielbegrenzungHinten())
                    {  
                        setLocation(getX() - 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("right"))
            {
                    setImage("Bomberman-Seite02.gif");
                    Greenfoot.delay(1);
                    if(!wandVorne()&&!wandfVorne()&&!DSpielbegrenzungVorne())
                    {
                        setLocation(getX() + 1, getY());
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("up"))
            {
                    setImage("Bomberman-Hinten.gif");
                    Greenfoot.delay(1);
                    if(!wandLinks()&&!wandfLinks()&&!DSpielbegrenzungLinks())
                    { 
                        setLocation(getX(), getY() - 1);
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("down"))
            { 
                    setImage("Bomberman-Vorne.gif");
                    Greenfoot.delay(1);
                    if(!wandRechts()&&!wandfRechts()&&!DSpielbegrenzungRechts())
                    {
                        setLocation(getX(), getY() + 1);
                    }
                    Greenfoot.delay(1);
                    ExplosionsUpgrades();
            }
            else if(Greenfoot.isKeyDown("space"))
            {
                
                {
                    getWorld().addObject(new Bombe(reichweite), getX(), getY());
                }
            }
        }

public int reichweite = 1;
        
        public void ExplosionsUpgrades()
        {
        
            if(isTouching(ExplosionsUpgrade.class))
                {
                    removeTouching(ExplosionsUpgrade.class);
                    reichweite++;
                }
        }

Sorry, falls ich dich langsam nerve :)
danpost danpost

2 days ago

#
You need to add the Explosion objects created in the loop (Bombe: 20) into the world at line 21.
There are more replies on the next page.
1
2