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

2012/6/20

Remove.Objects ohne Spielstop

1
2
Spielkind Spielkind

2012/6/22

#
Okay. Here is what I've done: in schildkroete.class I put
/**
     * liefert normalerweise true, wird aber hier auf false gesetzt, 
     * damit der Sound nicht zu früh startet.
     * 
     * @return false, solange noch nicht die erforderliche Anzahl von Objekte erreicht ist
     */
    
    public boolean sound = false;
    
and in the act()
    
        if(!sound)
        {
            if(getWorld().numberOfObjects() == 204) 
            {  
                Greenfoot.playSound("happy-birthday.wav");   
                sound = true;
            }   
        }  
Compilation is okay. But when I run this szenario, it stops when the first turtle get removed with a message
java.lang.NullPointerException at Schildkroete.act(Schildkroete.java:96)
which is the line with
if(getWorld().numberOfObjects() == 204) 
What went wrong?
erdelf erdelf

2012/6/22

#
pls whole act method here.
Spielkind Spielkind

2012/6/22

#
I'm very happy, that you'll help me with this (my first Szenario)
/**
     * Tue was
     */
    public void act() {
               
        if (vornFrei()) {
            vor();
        } else {
            linksUm();
            if (vornFrei()) {
                vor();
            } else {
                linksUm();
                linksUm();
                vor();
            }
        }
        
        if (ErdbeereDa()) {
            nimm();
            } else {
                gib();
            }
            
        if(!sound)
        {
            if(getWorld().numberOfObjects() == 204) 
            {  
                Greenfoot.playSound("happy-birthday.wav");   
                sound = true;
            }   
        }  
    }
erdelf erdelf

2012/6/22

#
ich schreib mal auf deutsch weiter. einfach mal den sound teil nach vorne stellen.
    /** 
         * Tue was 
         */  
        public void act() {  
                                 if(!sound)  
            {  
                if(getWorld().numberOfObjects() == 204)   
                {    
                    Greenfoot.playSound("happy-birthday.wav");     
                    sound = true;  
                }     
            }    
            if (vornFrei()) {  
                vor();  
            } else {  
                linksUm();  
                if (vornFrei()) {  
                    vor();  
                } else {  
                    linksUm();  
                    linksUm();  
                    vor();  
                }  
            }  
              
            if (ErdbeereDa()) {  
                nimm();  
                } else {  
                    gib();  
                }  
        }  
Spielkind Spielkind

2012/6/22

#
ERDELF ! Es funktioniert!! DANKE, danke, danke! Aber warum hat die Reihenfolge einen Einfluss?? Naja, für mein/unser erstes Szenario bin ich sehr zufrieden. Mal sehen, wie es ankommt.. Als nächstes werde ich wohl erstmal ein ausführlicheres Handbuch lesen... Ich wünsche Dir ein wunderbares Wochenende! Bis ein nächstes mal :D Spielkind
erdelf erdelf

2012/6/22

#
weil, der befehl getWorld() erfordert, dass das Objekt noch da ist was bei dir nicht der Fall war, die act() methode wird nach dem Tod noch zu ende geführt.
Spielkind Spielkind

2012/6/22

#
Das verstehe ich nicht. Er fragt doch nach den (sonstigen) Objekten in der Welt. Die sind doch alle noch da... --- Ach jetzt verstehe ich: weil in der Schildkroete.class abgefragt, und die waren, wenn es hinten steht, dann alle schon weg. Deswegen auch die Meldung mit
NullPointerException
Richtig?
erdelf erdelf

2012/6/22

#
richtig
Spielkind Spielkind

2012/6/22

#
okay. Wieder was gelernt. Ich werde mich jetzt ausloggen und mich ausschließlich um meine eigentliche Arbeit kümmern. Dank Dir nochmal und alles gute!
You need to login to post a reply.
1
2