[SFML, C++] Spis sprite'ów (dynamiczna tablica i struktura)
Ostatnio zmodyfikowano 2011-08-24 21:25
Dark Temat założony przez niniejszego użytkownika |
[SFML, C++] Spis sprite'ów (dynamiczna tablica i struktura) » 2011-08-22 19:28:42 Otóź mam problem z stworzeniem spisu sprite'ów które będą wyróżniały się nazwami nadanymi w strukturze, próbowałem to poprawiać lecz na nic, dalej coś nie pasuje. Pomoże ktoś rozwiązać ten problem?
class Sprite : public Image { protected: struct SprajtST { string SpriteName; vector < sf::Sprite > SprajtSTV; }; int i; public: vector < SprajtST > SprajtV; Sprite() : i( 0 ) { } void AddNameSprite( string * SprajtName ) { for( i; i += 1; i++ ) { sf::Sprite SprajtO; SprajtO.SetImage( ImageV[ i ] ); SprajtV.push_back( SprajtO ); } } };
|
|
DejaVu |
» 2011-08-22 20:35:04 Użyj kontenera std::map - jest lepszy do tego co chcesz uzyskać. |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-22 20:54:14 By się przydało wstawić do dokumentacji tak sądzę, o tym std::map http://cpp0x.pl/forum/temat/?id=711
@edit Tylko jest problem jak chcę zrobić klucz stringa a wartość w kontenerze jako sf::Sprite to nie da rady przekonwertować Sprite'a, mam taki oto kod, dwie klasy, czy dałoby radę zrobić to aby działało normalnie? :
class Image { protected: vector < sf::Image > ImageV; vector < string > NameV; public: void AddImage( string FileName ) { sf::Image ImageI; if( ImageI.LoadFromFile( FileName ) ) { ImageI.SetSmooth( false ); ImageV.push_back( ImageI ); NameV.push_back( FileName ); } else cout << "Błąd wczytywania " << FileName << endl; } void ListOfImage() { if( NameV.size() != 0 ) { vector < string >::iterator itName; short int Lp = 1; for( itName = NameV.begin(); itName != NameV.end(); itName++ ) { cout << Lp << ". " << "Image V = NameV[ " << Lp - 1 << " ] = " << * itName << endl; Lp++; } } else cout << "Brak danych" << endl; } };
class Sprite : public Image { private: vector < string > SpriteImName; int i; public: map < string, sf::Sprite > SprajtMap; Sprite() : i( 0 ) { } void AddNameSprite( string SprajtName ) { for( i; i += 1; i++ ) { sf::Sprite SprajtO; SprajtO.SetImage( ImageV[ i ] ); SprajtMap.insert( SprajtO ); SprajtMap[ SprajtName ] = SprajtO; } } void ListSprajtIm() { } }; |
|
DejaVu |
» 2011-08-24 14:05:51 std::map < std::string, sf::Sprite > bla; sf::Sprite & sprite = bla[ "nazwa" ];
|
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-24 21:25:35 Dzięki, właśnie tego mi było potrzeba, zobaczę co da radę dalej zrobić :) |
|
« 1 » |