int main() { sf::RenderWindow window(sf::VideoMode(800, 600), "creator"); std::vector positions; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::EventType::Closed) window.close(); else if (event.type == sf::Event::EventType::MouseButtonPressed) { if (event.key.code == sf::Mouse::Left) { sf::Vector2f p(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y); positions.push_back(p); } else if (event.key.code == sf::Mouse::Right) { positions.pop_back(); } } else if (event.type == sf::Event::EventType::KeyPressed) { if (event.key.code == sf::Keyboard::Key::Return) { // save std::ofstream out("shape.txt", std::ios::trunc); out << "sf::ConvexShape shape;" << std::endl; out << "shape.setPointCount(" << positions.size() << ");" << std::endl; for (size_t i = 0; i < positions.size(); i++) out << "shape.setPoint(" << i << ", sf::Vector2f(" << positions[i].x << ", " << positions[i].y << "));" << std::endl; out.close(); system("start shape.txt"); } } } window.clear(sf::Color::White); sf::ConvexShape c; c.setFillColor(sf::Color::Red); c.setPointCount(positions.size()); for (size_t i = 0; i < positions.size(); i++) c.setPoint(i, positions[i]); window.draw(c); for (size_t i = 0; i < positions.size(); i++) { sf::CircleShape s; s.setPosition(positions[i]); s.setRadius(4); s.setOrigin(4 / 2, 4 / 2); s.setFillColor(sf::Color::Green); window.draw(s); } window.display(); } return 0; }