2016-04-03 11 views
-1

Ich mache ein ASCII-Spiel, wo viele Symbole den Klassen entsprechen.Wie mache ich eine Liste mit Zeichen, die Objekten entsprechen?

zum Beispiel # = wallTile

Nun wollte ich die Kachel-Klasse machen, so dass ich die Karte von Text-Datei in 2d char-Vektoren kann lesen und Kachel-Objekte aus, dass erstellen. Die Tileobjects verwenden eine Funktion im Setter wie "getTileBehaviourPerSymbol (char symbol)"

Jetzt war ich im Begriff, einen Switch-Fall zu starten, aber es muss ein besserer Weg sein. Diese Funktion sollte einige list/vector/enum/array idk durchsuchen, wo es durchsuchbare Zeichen gibt, die einem Typ von Klasse entsprechen.

Wie wird das in C++ gemacht?

+0

Eine Möglichkeit ist es, ein 'std :: map' zu verwenden. –

Antwort

1

Yea ein std :: map wie dies zum Beispiel

#include <map> 

//Assuming each object in your game inherits from a base class 
std::map<char, Object> foo. 

Object getObjectBySybol(char c) {return foo[c]}; 

Hoffentlich, dass die Dinge aufklärt: http://www.cplusplus.com/reference/map/map/

+0

außer Sie würden 'operator []' nicht verwenden, wenn Sie eine Map abfragen, weil sie nicht const-freundlich ist. Du würdest 'at()' –

+0

@Cameron Bell benutzen. Ich bekomme es immer noch nicht, obwohl eine Karte genau das zu sein scheint, was ich brauchte, sagt Visual Studio: "Typname ist nicht erlaubt", wenn ich dies erklären will: 'std :: map tileTypeMap {{'#, TileTypeWall}}; '(TileTypeWall wird von TileType abgeleitet) – t0b4cc0

Verwandte Themen