SFML(Simple and Fast Multimedia Library)を使用してC++でマウスクリックを処理する方法について説明します。以下に、いくつかの方法と具体的なコード例を示します。
方法1: イベントループを使用する方法
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Mouse Click Example");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::MouseButtonPressed)
{
if (event.mouseButton.button == sf::Mouse::Left)
{
int x = event.mouseButton.x;
int y = event.mouseButton.y;
// マウスクリックの座標(x, y)を使用して何か特定の処理を行う
// 例: クリックした場所にオブジェクトを描画するなど
}
}
}
window.clear();
// ゲームやアプリケーションの描画などの処理を行う
window.display();
}
return 0;
}
方法2: イベントコールバックを使用する方法
#include <SFML/Graphics.hpp>
void onMouseClick(sf::Event::MouseButtonEvent event)
{
if (event.button == sf::Mouse::Left)
{
int x = event.x;
int y = event.y;
// マウスクリックの座標(x, y)を使用して何か特定の処理を行う
// 例: クリックした場所にオブジェクトを描画するなど
}
}
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Mouse Click Example");
window.setMouseCursorVisible(false); // マウスカーソルを非表示にする(任意)
window.setActive();
sf::Event event;
while (window.waitEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::MouseButtonPressed)
onMouseClick(event.mouseButton);
window.clear();
// ゲームやアプリケーションの描画などの処理を行う
window.display();
}
return 0;
}