#include #include #include #include sf::Shape build_ngon(int n, float radius) { sf::Shape s; for (int i = 0; i < n; i++) { float angle = i * 2.0 * M_PI / n; float x = radius * cos(angle); float y = radius * sin(angle); s.AddPoint(x, y, sf::Color(255, 128, 0), sf::Color(0, 0, 100)); } s.SetColor(sf::Color(255, 255, 255, 255)); s.SetOutlineWidth(4); return s; } int main() { sf::Clock Clock; sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics"); // App.UseVerticalSync(true); // App.SetActive(); std::list shapes; for (int n = 3, x = 0; x < 4; x++) { for (int y = 0; y < 3; y++, n++) { sf::Shape s = build_ngon(n, 75); s.Move(200 * x + 100, 200 * y + 100); shapes.push_back(s); } } float last_time = Clock.GetElapsedTime(); while (App.IsOpened()) { float ticks = Clock.GetElapsedTime(); float elapsed = ticks - last_time; sf::Event Event; while (App.GetEvent(Event)) { if (Event.Type == sf::Event::Closed) App.Close(); if ( (Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape) ) App.Close(); } App.Clear(sf::Color(0, 0, 0)); for (std::list::iterator it = shapes.begin(); it != shapes.end(); it++) { it->Rotate(360.0 / 4 * elapsed); App.Draw(*it); } App.Display(); last_time = ticks; } return EXIT_SUCCESS; }