Beste Lösung für eine 2D Umgebung

MetallDragon

Erfahrenes Mitglied
Hi Leute,
der Titel klingt zwar ein bisschen doof aber ich will versuchen hier mal zu erläutern, was ich meine.

Ich bin z.Z dabei ein bisschen an einer (nicht grafischen) 2D-Umgebung(á la Schachbrett) für ein Spielchen zu basteln.
Das ganze funktioniert auch relativ problemlos.
Aber irgendwie stolpere ich heute über ein (zugegebenermassen recht altes)Tutorial
In dem das Spielfeld (also die eigendliche umgebung) einfach als ein array von Objekten (damit meine ich keine programmiertechnischen Objekte sondern z.B Steine, Bäume was eben so auf einem Spielfeld rumliegt ;)) realisiert ist.
Ich stelle mir diese Lösung allerdings sehr Speicheraufwendig und langsam vor.

In meinem Projekt habe ich das ganze über ein Array aus Pointern auf Objekte realisiert
Nun meine Frage: Welche Lösung ist eurer Meinung nach schneller/professioneller ?
Bzw: Wie würdet ihr so etwas regeln ?
Es ist eine reine Interessensfrage...

MfG M.D
 
Zuletzt bearbeitet:
Ich würde ein zweidimensionales Array von Object der Klasse CFeld verwenden. Die Klasse wäre etwa so aufgebaut:
Code:
#include <Dingsda.h>
#include <list>

class CFeld
{
public:

  int m_Type; // Wiese, Wald, Wasser oder so
  
  // und dann noch eine Liste aller Sachen, die sich dort befinden:
  typedef std::list< CDingsda* > list_type;
  list_type m_Objekte;
};
CDingsda ist eine Klasse, die Objekte repräsentiert. Ich schlage deshalb vor, nur Pointer reinzupacken, weil du die Möglichkeit hättest, Klassen von CDingsda abzuleiten, um neue Objekttypen zu definieren. Das wird allerdings dann schon etwas komplexer.
 
Klingt sinnvoll.
Ich arbeite gerade an einer Lösung mit 2 Pointer-Arrays: eins für die Objekte und eins für die Landschaft.
Ich werden den Quellcode mal bei Gelegenheit posten. Bin derzeit aber noch am basteln.

MfG M.D
 
Überdenke das aber gut! Ich weiß ja nicht, wie umfangreich das Projekt ist, aber du wirst dich ziemlich ärgern, wenn du später alles umstrukturieren musst, weil du merkst dass deine Umsetzung sehr einschränkt. Die Klassenvariante von Kachelator habe ich selbst immer in ähnlicher Weise bevorzugt und damit fährt man definitiv sicher und man kann sehr bequem erweitern und seine Lösungen generalisieren.
 
Falls du damit die Möglichkeit meinst, abgeleitete Klassen zu verwenden kann ich dich beruhigen - Das ist in Meiner Version auch Möglich.

Sobald ich die Formatierungszicken von Linux nach Window$ bezwungen habe gibts eine Windows-lesbare Version. ;) Hier ist nur die Vi-Version.

MfG M.D
 

Anhänge

Zurück