Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML, C++] Spis sprite'ów (dynamiczna tablica i struktura)

Ostatnio zmodyfikowano 2011-08-24 21:25
Autor Wiadomość
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?
C/C++
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 );
        }
    }
   
};
P-39691
DejaVu
» 2011-08-22 20:35:04
Użyj kontenera std::map - jest lepszy do tego co chcesz uzyskać.
P-39695
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? :
C/C++
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()
    {
    }
   
};
P-39698
DejaVu
» 2011-08-24 14:05:51
C/C++
std::map < std::string, sf::Sprite > bla;
sf::Sprite & sprite = bla[ "nazwa" ];
//sprite.SetImage(...);
//itd
P-39835
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ć :)
P-39880
« 1 »
  Strona 1 z 1