Greenfoot: Wie entfernt man durch Tastendruck alle Objekte einer Klasse auf dem Spielfeld?
Kenne momentan nur diesen Code:
Actor klasse;
klasse = getOneObjectAtOffset(1, 1, Klasse.class);
getWorld().removeObject(klasse);
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Java, Code
Importiere das Package für die Liste:
import
java.util.List;
Danach gibt es 2 Möglichkeiten.
a) Du merkst dir alle Objekte der Klasse Actor, die du erstellst und speicherst sie in dieser Liste. Wenn du sie löschen möchtest, kannst du mit einer Schleife über diese laufen.
for(int i = 0; i < actors.size(); ++i){ getWorld().removeObject(actors.get(i)); }
b) Du läufst über alle Objekte, die die Welt hat und schaust, von welchem Typ diese sind.
List worldObjects = getObjects(null);
for(int i = 0; i < worldObjects.size(); ++i){ Object current = worldObjects.get(i);
if(current instanceof Actor){ getWorld().removeObject(current); } }
Um ausnahmslos alle Objekte zu entfernen, reicht auch Folgendes:
List objects = getObjects(null); removeObjects(objects);
Eventuell solltest du bei jeder Lösung jeweils eine zusätzlich Abfrage einbauen, die prüft, ob Objekte überhaupt vorhanden sind:
if
(objects !=
null
) { /* ... */ }