Hallo,
ich möchte ein einfaches Roguelike in Java programmieren. Für die Ausgabe habe ich einen kleinen CLI-Emulator geschrieben. Jetzt Frage ich mich, ob ich für die Karte des Spiels (2D) besser ein Array oder eine Liste verwenden soll.
Vorteile des Arrays:
– einfaches Erzeugen von zufälligen Karten
– Objekte auf der Karte können über array[x][y] angesprochen werden
Nachteile des Arrays:
– Position der Objekte wird u. U. doppelt gespeichert (Position im Array (array[x][y]) und Position, die das Objekt verwaltet (setX()/getX() ...)
– Objekte brauchen boolean-Feld, damit überprüft werden kann, ob sie beim Schleifendurchlauf bereits bearbeitet wurden (sowas wie hasMoved oder hasProcessed) -> min. zwei Schleifendurchläufe nötig (wieder auf false setzen)
Vorteile der Liste:
– keine doppelten Positionsdaten
– einfaches Kopieren der Liste (für den Schleifendurchlauf praktisch: Kopie der Liste anfertigen, Kopie durchlaufen und Objekte bewegen (doMove() o. ä.), anschließend Referenz löschen -> bis Liste leer ist)
Nachteile der Liste:
– Erzeugen von zufälligen Karten schwierig, da einzelne Felder nicht über [x][y] angesprochen werden können
– um Objekte nach der Position auszuwählen, muss die gesamte Liste durchsucht werden -> f € O(n)
Insgesamt scheinen mir Arrays im Vorteil. Was meint ihr?