#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;
}