Hallo!
Ich programmiere schon seit einiger Zeit an einem Programm, das eine per Textfile erstellte Levelkarte darstellen soll.
Mein Problem ist jetzt, in welcher Form ( also in welchem Datentyp) ich die Karte selbst implementieren soll.
Meine allererste Idee war, einen 2D-Vektor in der Größe der Karte zu nehmen, in den dann die Informationen für jedes Objekt gespeichert wird.
Beispiel: An Position (2,3) der Karte soll ein Haus stehen, also steht in worldMap.at(2).at(3) ein Pointer, der auf die Instanz der Hausklasse zeigt (wobei worldMap der angesprochene Vektor sein soll).
Hier entsteht nun schon das Problem: Da die Karte offensichtlich nicht nur aus Instanzen der Klasse "Haus" bestehen soll, habe ich eine Oberklasse definiert, von der sich sämtliche Objekte der Karte ableiten (also Häuser, Verzeirungen, Einheiten ...) . So ist es mir möglich, jeden beliebigen Gegenstand in die Karte einzufügen.
Schwierig wird es dann aber, wenn ich wieder auf die Objekte zugreifen will: Als Vektorinhalt habe ich jetzt ja nur Instanzen der Klasse BaseThing ( das ist die Klasse, von der ich sämtliche Objekte ableite ), und der fehlen nun mal ganz spezielle Funktionen, wie etwa die Möglichkeit, Ressourcen abzubauen o.ä..
Ich könnte jetzt natürlich diese speziellen Funktionen, die erst in der x-ten Ableitung der Klasse auftreten, als virtuelle Funktionen in der Basis-Klasse definieren, aber das kommt mir extrem unelegant vor. Nichtzuletzt, weil die Basisklasse dann gigantische Ausmaße annimmt.
Mir scheint damit der Weg über eine solche "Überklasse" nicht unbedingt der richtige zu sein - hat jemand von euch eine Idee, wie ich das besser machen kann? Vielleicht eine ganz andere Datenstruktur für die Levelkarte?
Danke schonmal im Voraus!