sf :: RenderWindowから継承
SFMLは、実際にはクラスから継承することをお勧めします。
class GameWindow: public sf::RenderWindow{};
ここから、エンティティを描画するためのメンバー描画関数を作成します。
class GameWindow: public sf::RenderWindow{
public:
void draw(const Entity& entity);
};
これで次のことができます。
GameWindow window;
Entity entity;
window.draw(entity);
エンティティにsf :: Spriteを継承させることで、エンティティが独自の一意のスプライトを保持する場合、これをさらに一歩進めることができます。
class Entity: public sf::Sprite{};
今sf::RenderWindow
だけのエンティティを描くことができ、およびエンティティが、今のような機能を持っているsetTexture()
し、setColor()
。エンティティは、スプライトの位置を独自の位置として使用することもできますsetPosition()
。これにより、エンティティの移動とスプライトの両方に関数を使用できます。
最後に、あなたが持っているだけでかなりいいです:
window.draw(game);
以下にいくつかの簡単な実装例を示します
class GameWindow: public sf::RenderWindow{
sf::Sprite entitySprite; //assuming your Entities don't need unique sprites.
public:
void draw(const Entity& entity){
entitySprite.setPosition(entity.getPosition());
sf::RenderWindow::draw(entitySprite);
}
};
または
class GameWindow: public sf::RenderWindow{
public:
void draw(const Entity& entity){
sf::RenderWindow::draw(entity.getSprite()); //assuming Entities hold their own sprite.
}
};