Найти в Дзене
Dull

Как ослеживать нажатие мыши в SDL2 C++

Оглавление

Отслеживание нажатия мыши в 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;

}

Объяснение кода:

  1. Инициализация SDL: Мы начинаем с инициализации библиотеки SDL. Если инициализация не удалась, выводим сообщение об ошибке и завершаем программу.
  2. Создание окна: Создаем окно, в котором будет происходить отображение.
  3. Главный цикл: В этом цикле мы обрабатываем события. Используя SDL_PollEvent, мы получаем события, такие как нажатия кнопок мыши.
  4. Отслеживание нажатий мыши: Мы проверяем, произошло ли нажатие кнопки мыши (SDL_MOUSEBUTTONDOWN). Если да, то проверяем, какая именно кнопка была нажата (левая или правая) и выводим соответствующее сообщение с координатами нажатия.
  5. Освобождение ресурсов: После выхода из главного цикла мы освобождаем ресурсы и завершаем работу SDL.

Компиляция

Для компиляции этого кода вам потребуется установить SDL2 и использовать соответствующие флаги компиляции. Например, если вы используете g++, команда может выглядеть так:

g++ -o mouse_tracking mouse_tracking.cpp -lSDL2

Убедитесь, что библиотека SDL2 установлена и доступна для вашего компилятора.