Frage von AllesSoKUHL, 53

Greenfoot removeObject funktioniert nicht, kennt sich wer aus?

Hallo Leute,

Also ich bin am Programmieren des Krabbenspiels in Greenfoot und habe gerade eine "Gifttraube" als Item hinzugefügt, die nach einiger Zeit wieder entfernt werden soll. Wenn ich aber das hier:

        if(limitOfGrapes == 40) {
           getWorld().removeObject(this);
        }
    }
}

eingebe, dann wird bei "getWorld().removeObject(this)" das "getWorld" rot unterkringelt und es steht "cannot find symbol - method getWorld()" da. Ich hoffe es kennt sich jemand aus und kann helfen, danke!

Antwort
von Gastnr007, 26

deine Funktion getWorld() gibt es nicht in der Gifttraubenklasse: vielleicht kannst du mit Greenfoot.getWorld() drauf zugreifen (Greenfoot ist etwas her xD)

Kommentar von AllesSoKUHL ,

Ich habe die Traubenklasse ja auf der "Crabworld" (also der Unterklasse von der Klasse "World" ) erstellt, deswegen verstehe ich die Fehlermeldung nicht. Hab übrigens deinen Vorschlag ausprobiert mit "Greenfoot." , klappt leider auch nicht :( ....

Kommentar von Gastnr007 ,

ist deine Traube Unterklasse von der Welt? (macht für den Normalmenschen wenig Sinn, außer wenn das Spiel innerhalb der Traube ist)
deine Traube sollte sicherlich keine Welt sondern ein Actor sein, sonst könntest du .removeObject direkt anwenden, allerdings ist deine Traube dann ja kein Actor mehr, den du entfernen könntest

Kommentar von AllesSoKUHL ,

Also die Traube ist ein Actor, ja, aber spawnen lasse ich sie sozusagen indem ich den Code dafür in "CrabWorld" (was ja zu "World" gehört) schreibe

Kommentar von Gastnr007 ,

wenn du den Code direkt in Crabworld ausführst, kannst du einfach removeObject ausführen :) (denn du bist ja die Welt)

Kommentar von AllesSoKUHL ,

Hast du vielleicht den "Remove-Code" parat? Weil eben der will bei mir nicht funktionieren

Kommentar von AllesSoKUHL ,

Ich gebe "getWorld().removeObject(this);"  ein

Kommentar von Gastnr007 ,

du brauchst noch dein GrapeObjekt: also removeObject(getObjects(Grape.class).get(0));
das entfernt die erste hinzugefügte Grape aus der Welt

Kommentar von AllesSoKUHL ,

Geil! das hat schon einmal die Fehlermeldung behoben, vielen Dank! Heißt das aber, dass nur die allererste Grape entfernt wird? Wenn ja, wie könnte ich dafür sorgen, dass die folgenden auch wegkommen?

Kommentar von Gastnr007 ,

indem du statt dem oben einfach
removeObjects(getObjects(Grape.class)); nimmst :)

Kommentar von AllesSoKUHL ,

Ich hab das ganze mit "run" mal laufen lassen, aber irgendwie bleiben die dummen Trauben trotzdem da.... 

Kommentar von Gastnr007 ,

wenn es immer noch nicht funktioniert hat, dann nimm:
for(Grape g:getObjects(Grape.class)){
   removeObject(g);
}
das sollte eigentlich das gleiche wie removeObjects(getObjects(Grape.class)); sein...

Keine passende Antwort gefunden?

Fragen Sie die Community