Masz tu draft tego czego oczekujesz:
#include <SFML/Graphics.hpp>
#include <array>
#include <random>
constexpr static size_t window_width = 800;
constexpr static size_t window_height = 600;
constexpr static size_t max_circles = 100;
constexpr static size_t max_radius = 100;
std::array<sf::CircleShape, max_circles> createCircleArray() {
std::random_device rd;
std::uniform_int_distribution<unsigned> distX(0, window_width);
std::uniform_int_distribution<unsigned> distY(0, window_height);
std::uniform_int_distribution<float> radius(0, max_radius);
std::array<sf::CircleShape, max_circles> circles;
for(auto& circle: circles) {
circle = sf::CircleShape(radius(rd));
circle.setFillColor(sf::Color::Transparent);
circle.setOutlineColor(sf::Color::Red);
circle.setOutlineThickness(2);
circle.setPosition(distX(rd), distY(rd));
}
return circles;
}
void drawCircles(sf::RenderWindow& window, std::array<sf::CircleShape, max_circles>& circles) {
for(auto& circle: circles) {
window.draw(circle);
}
}
int main()
{
sf::RenderWindow window(sf::VideoMode(window_width, window_height), "Window");
auto circles = createCircleArray();
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
// Close window: exit
if (event.type == sf::Event::Closed)
window.close();
}
// Clear screen
//window.clear();
drawCircles(window, circles);
window.display();
}
return EXIT_SUCCESS;
}