2016-12-27 2 views
0

Ich habe ein Gitter, als ein Array von Arrays mit jeweils 1 Zeichen (char [] []) gemacht.Speichern von Koordinaten und Eigenschaften von Objekten in einem 2D-Gitter in einer ArrayList

In diesem Raster baute ich Häuser, die einen oder mehrere Blöcke des Rasters einnehmen. Ich möchte den Standort (Gitterkoordinaten) und Eigenschaften (Preis, Instandhaltung) in irgendeiner Art von Liste speichern.

Das Haus Objekt ist Teil eines ENUM mehr Objekte mit diesen Eigenschaften enthalten:

public enum Building { 
    HOUSE(width, height, price, upkeep, symbol) 
    FACTORY(width, height, price, upkeep, symbol) 
} 

- Breite und Höhe ist die Anzahl der Kacheln in dem Raster es nimmt - Symbol wird das Zeichen, das verwendet wird, im Netz der spezifischen Gebäude darzustellen

ich dachte, es auf diese Weise zu tun: (Pseudo-Code)

ArrayList<house> buildings = new ArrayList<House> 

Aber wie c Soll ich den Standort des Hauses hinzufügen (die X- und Y-Koordinaten in diesem ArrayList? Sollte ich einen anderen Datentyp verwenden?

Antwort

1

Mein Gefühl Ihrer Enum sollte BuildingType sein, wenn Ihre zwei Hausobjekte unterschiedliche Eigenschaften haben könnten, wie das, was Sie erwähnt haben.

Erstellen Sie eine Building Klasse, die etwas wie int x; int y; und eine BuildingType (die enum) hat, die angibt, welche Art des Gebäudes es ist.

Wenn es notwendig ist, können Sie Superklasse haben Building und zwei (oder mehr?) Untertypen (House, Factory, Apartment usw.) In diesem Fall müssen Sie nicht die ENUM nicht mehr. Alles ist Ihren Anforderungen gewachsen.

+0

Ich habe diese Klasse mit int x erstellt; int y und der BuildingType. Welchen Datentyp würden Sie zum Speichern der Gebäudeobjekte empfehlen? Vielen Dank! – Waterfles

Verwandte Themen