#include #include #include #include #include #include "game_settings.h" #include "game_objects.h" class Object { public: Object(GameObject* ptr) : obj{ptr}, symbol{sf::String{ptr->symbol()}, font, 20} { symbol.setFillColor(sf::Color::Blue); shape.setOrigin(5,5); symbol.setOrigin(0,10); } void update_and_draw(sf::RenderWindow & window) { obj->update(); float x,y; Coord pos { obj->position() }; x = 5*pos.x; y = 5*pos.y; shape.setPosition(x,y); symbol.setPosition(x,y); window.draw(shape); window.draw(symbol); } static sf::Font font; private: std::shared_ptr obj; sf::CircleShape shape{10}; sf::Text symbol; }; sf::Font Object::font {}; int main() { if (!Object::font.loadFromFile("/usr/share/fonts/truetype/freefont/FreeMono.ttf")) { std::cerr << "Kunde inte läsa font!\n"; } sf::ContextSettings settings; sf::RenderWindow window(sf::VideoMode(5*MAX_X+20, 5*MAX_Y+20), "My Game"); std::vector objects { new ZigZag{Coord{5,5}}, new Rock{Coord{5,20}}, new Rock{Coord{20,15}} }; for ( int i{}; i < 20; ++i ) { sf::sleep(sf::seconds(1)); window.clear(); for ( Object & o: objects ) { o.update_and_draw(window); } window.display(); } }