Hallo
Ich hatte dieses Problem schön öfters und habe es auf verschiedene Arten versucht zu lösen. Ich glaube aber, dass ich nie einen wirklich sauberen Weg gewählt habe.
Szenario:
Ich habe ein Spiel und die Spielobjekte, oder anders gesagt Spielfiguren, sind in einer Liste gespeichert. Die Spielobjekte können zerstört werden. Die zerstören Spielobjekte sollen dann aus der Liste gelöscht werden.
Angenommen ich habe so eine Liste:
[Java]
private List<GameObject> gameObjectList;
[/Java]
Mein Ansatz ist nun die Spielobjekte so zu löschen:
[Java]
private void deleteDestroyedObjects() {
for( int i = 0; i < gameObjectList.size(); i++) {
if( gameObjectList.get( i ).isDestroyed() ) {
gameObjectList.remove( i );
}
}
}
[/Java]
Ein Kollege meinte allerdings, dass dies nicht sauber ist. Einen besseren Weg kannte er allerdings auch nicht. Werden in der for-Schleife wirklich alle GameObjekte korrekt überprüft und gelöscht?
Ist dies der bestmögliche Weg oder wie würdet ihr das lösen?
Ich hatte dieses Problem schön öfters und habe es auf verschiedene Arten versucht zu lösen. Ich glaube aber, dass ich nie einen wirklich sauberen Weg gewählt habe.
Szenario:
Ich habe ein Spiel und die Spielobjekte, oder anders gesagt Spielfiguren, sind in einer Liste gespeichert. Die Spielobjekte können zerstört werden. Die zerstören Spielobjekte sollen dann aus der Liste gelöscht werden.
Angenommen ich habe so eine Liste:
[Java]
private List<GameObject> gameObjectList;
[/Java]
Mein Ansatz ist nun die Spielobjekte so zu löschen:
[Java]
private void deleteDestroyedObjects() {
for( int i = 0; i < gameObjectList.size(); i++) {
if( gameObjectList.get( i ).isDestroyed() ) {
gameObjectList.remove( i );
}
}
}
[/Java]
Ein Kollege meinte allerdings, dass dies nicht sauber ist. Einen besseren Weg kannte er allerdings auch nicht. Werden in der for-Schleife wirklich alle GameObjekte korrekt überprüft und gelöscht?
Ist dies der bestmögliche Weg oder wie würdet ihr das lösen?