Отслеживание нажатия мыши в SDL2 на C++ довольно просто. Вам нужно использовать обработчик событий SDL для проверки событий мыши. Ниже приведен пример, который демонстрирует, как это сделать:
#include <SDL.h>
#include <iostream>
int main(int argc, char* argv[]) {
// Инициализация SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cerr << "Не удалось инициализировать SDL: " << SDL_GetError() << std::endl;
return -1;
}
// Создание окна
SDL_Window* window = SDL_CreateWindow("Отслеживание нажатия мыши",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
800, 600,
SDL_WINDOW_SHOWN);
if (!window) {
std::cerr << "Не удалось создать окно: " << SDL_GetError() << std::endl;
SDL_Quit();
return -1;
}
// Главный цикл
bool running = true;
while (running) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = false;
}
// Отслеживание нажатия кнопок мыши
if (event.type == SDL_MOUSEBUTTONDOWN) {
if (event.button.button == SDL_BUTTON_LEFT) {
std::cout << "Левая кнопка мыши нажата в позиции ("
<< event.button.x << ", " << event.button.y << ")" << std::endl;
} else if (event.button.button == SDL_BUTTON_RIGHT) {
std::cout << "Правая кнопка мыши нажата в позиции ("
<< event.button.x << ", " << event.button.y << ")" << std::endl;
}
}
}
// Здесь можно обновить состояние игры и отрисовать кадр
}
// Освобождение ресурсов
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
Объяснение кода:
- Инициализация SDL: Мы начинаем с инициализации библиотеки SDL. Если инициализация не удалась, выводим сообщение об ошибке и завершаем программу.
- Создание окна: Создаем окно, в котором будет происходить отображение.
- Главный цикл: В этом цикле мы обрабатываем события. Используя SDL_PollEvent, мы получаем события, такие как нажатия кнопок мыши.
- Отслеживание нажатий мыши: Мы проверяем, произошло ли нажатие кнопки мыши (SDL_MOUSEBUTTONDOWN). Если да, то проверяем, какая именно кнопка была нажата (левая или правая) и выводим соответствующее сообщение с координатами нажатия.
- Освобождение ресурсов: После выхода из главного цикла мы освобождаем ресурсы и завершаем работу SDL.
Компиляция
Для компиляции этого кода вам потребуется установить SDL2 и использовать соответствующие флаги компиляции. Например, если вы используете g++, команда может выглядеть так:
g++ -o mouse_tracking mouse_tracking.cpp -lSDL2
Убедитесь, что библиотека SDL2 установлена и доступна для вашего компилятора.