2016-04-03 25 views
-1

Sınıflara karşılık gelen çok sayıda sembolün bulunduğu bir ascii oyunu yapıyorum. örnek için #Nesnelere karşılık gelen karakterlerle nasıl listelenir?

= wallTile

Şimdi ben 2d karakter vektörlere textfile haritayı okumak ve bundan kiremit nesneleri oluşturmak, böylece kiremit sınıfını yapmak istedi. Tileobjects, dizgede "getTileBehaviourPerSymbol (char sembolü)"

gibi bir işlev kullanıyor. Şimdi bir anahtar durumu başlatmak üzereydim, ancak daha iyi bir yol olması gerektiğinden emin olun. Bu işlev, bir sınıf türüne karşılık gelen göz atılabilir karakterlerin bulunduğu bazı liste/vektör/enum/dizi kimliğine göz atmalıdır.

Bu nasıl oluyor da C++?

+0

bir yolu 'std :: map' kullanmaktır. –

cevap

1

Evet bir std kullanmak :: harita böyle örnek

#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]}; 

Umarım şeyleri açıklıyor her şeyi: http://www.cplusplus.com/reference/map/map/

+0

haricinde, bir harita sorgulanırken, operatör dostu olmadığı için operatör [] 'yi kullanmazsınız. 'at() ' –

+0

@Cameron Bell'i kullanacağım, bir haritanın tam olarak ihtiyacım olan bir şey gibi görünmesine rağmen hala göremiyorum, görsel stüdyo bana şunu söyler:" Tip adı izin verilmez ": Bunu bildirmek isterim:' std :: map tileTypeMap {{'#', TileTypeWall}}; '(TileTypeWall, TileType'dan türetilmiştir) – t0b4cc0

İlgili konular