2017-03-01 3 views
-3

Ich arbeite an einem Spiel und möchte, dass wenn ich ein Objekt erstellen wird es zu einem Array hinzugefügt (so ist es einfacher zu zeichnen und vielleicht ändern Coords und Zeug). Ich weiß nur nicht, wie es geht. Wenn es hilft hier ist meine Funktion:sfml - setze alle Objekte in Array

void CreateTile(string Texture, sf::Vector2f Pos) 
{ 
    sf::Texture texture; 
    texture.loadFromFile(Texture); 
    sf::Sprite Tile; 
    Tile.setTexture(texture); 
    Tile.setPosition(Pos); 
} 

Vielen Dank im Voraus!

+2

Suche nach 'std :: vector'. – nwp

+3

Warum machst du ein Spiel, wenn du die Grundlagen von C++ nicht beherrschst? – DeiDei

+0

http://en.cppreference.com/w/cpp/container – domsson

Antwort

0

Sie können einen Container aus der Standardbibliothek verwenden, der einfachste ist der std::vector<>. sf::Texture Objekte sind schwere Objekte, die nicht unnötig kopiert werden sollten. Sie sollten sie an einem Ort und nur Referenz sie bei Bedarf aufbewahren.

std::vector<sf::Sprite*> sprites; 
std::vector<sf::Texture*> textures; 

void CreateTile(const std::string& file, const sf::Vector2f& position) 
{ 
    sf::Texture* texture = new sf::Texture(); 
    texture->loadFromFile(file); 

    textures->push_back(texture); 

    sf::Sprite* tile = new sf::Sprite(); 
    tile->setTexture(*texture); 
    tile->setPosition(position); 

    sprites->push_back(tile); 
} 

Und diese sollen moderne C++ sein, sollten Sie nicht Verwendung roh Zeiger wie oben. Verwenden Sie Smart Zeiger wie std::shared_ptr.

Warnung: Die Lösung wird nicht nur diesen Code kopieren und hoffen, dass es irgendwie funktioniert. Holen Sie sich ein gutes Buch über die Grundlagen von C++ und lesen Sie es von Anfang bis Ende. Es gibt keine Abkürzungen. Sie müssen die Sprache lernen, wenn Sie ein Spiel programmieren möchten.