#include <SFML/Graphics.hpp>
class SenkuGame {
public:
SenkuGame();
void run();
private:
sf::RenderWindow window;
sf::CircleShape marble;
bool isMarbleSelected;
sf::Vector2f selectedMarblePosition;
void handleEvents();
void update();
void render();
};
SenkuGame::SenkuGame() : window(sf::VideoMode(800, 600), "Senku Game"), isMarbleSelected(false) {
marble.setRadius(20.f);
marble.setFillColor(sf::Color::Red);
marble.setPosition(100.f, 100.f);
}
void SenkuGame::run() {
while (window.isOpen()) {
handleEvents();
update();
render();
}
}
void SenkuGame::handleEvents() {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
else if (event.type == sf::Event::MouseButtonPressed) {
if (event.mouseButton.button == sf::Mouse::Left) {
sf::Vector2i mousePosition = sf::Mouse::getPosition(window);
sf::Vector2f worldPosition = window.mapPixelToCoords(mousePosition);
// Verificar si se hizo clic en la bola
if (marble.getGlobalBounds().contains(worldPosition)) {
isMarbleSelected = true;
selectedMarblePosition = marble.getPosition();
}
}
}
else if (event.type == sf::Event::MouseButtonReleased) {
if (event.mouseButton.button == sf::Mouse::Left) {
isMarbleSelected = false;
}
}
else if (event.type == sf::Event::MouseMoved) {
if (isMarbleSelected) {
sf::Vector2i mousePosition = sf::Mouse::getPosition(window);
marble.setPosition(window.mapPixelToCoords(mousePosition));
}
}
}
}
void SenkuGame::update() {
// Lógica de actualización del juego (si es necesario)
}
void SenkuGame::render() {
window.clear();
window.draw(marble);
window.display();
}
int main() {
SenkuGame game;
game.run();
return 0;
}