Геометрические фигуры мультимедийной библиотеки SFML для разработки игр на C++
Перед тем как приступить к рассмотрению темы, геометрические фигуры, разберём каркас программы на С++, которая использует библиотеку SFML.
Для работы с кодом мы будем использовать Visual Studio 2022 и библиотеку SFML. Как подключить библиотеку SFML к Visual Studio 2022 вы можете узнать посмотрев видео инструкцию «Подключение библиотеки SFML C++»
Каркас программы библиотеки SFML
Переменной window назначен тип графическое окно (RenderWindow).
Параметр VideoMode (1500, 900), определяет размер графического окна по горизонтали 1500 и по вертикали 900.
L«Новый проект» — название графического окна, Style: Default — стиль окна по умолчанию.
Цикл while (window.isOpen ()) будет работать пока графическое окно открыто.
В переменную event типа Event, сохраняется событие, например нажатие мышкой на крестик окна или нажатие клавиши на клавиатуре.
Цикл while (window.pollEvent (event)) включается в работу когда возникает какое-либо событие и записывает его с помощью метода pollEvent () в переменную event. Далее в теле цикла идёт обработка событий, в один момент времени может быть обработано только одно событие.
Обработчик события нажатие на крестик графического окна, метод Close () закрывает окно.Очистка графического окна
Метод clear (Color: Blue), очищает графическое окно и разукрашивает его в синий цвет.
Вывод рисунка на экран
Метод display () выводит нарисованные объекты методом draw () в графическое окно.
Прямоугольник
Переменная recr типа прямоугольник с размерами 200×100
RectangleShape тип, который создаёт объект прямоугольник с методами и свойствами изменения его параметров, а также его анимации.
Очистка графического окна, отрисовка двух объектов recr, rect1 и вывод объектов в графическое окно
Метод draw () рисует объекты в графическом окне, при отсутствии метода draw () и display (), графическое окно будет пустым, методы размещаются внутри цикла while (window.isOpen).
Задаёт цвет заливки в формате RGB
Метод setFillColor () устанавливает цвет заливки прямоугольника.
Варианты заливки: обычная, RGB, RGB c альфа каналомУстановка координат прямоугольника
Метод setPosition () задаёт координаты прямоугольника, для точки координат фигуры, которая по умолчанию находится в верхнем левом углу фигуры.
setPosition (300,100)Толщина и цвет линии контура прямоугольника
Метод setOutlineThickness () устанавливает толщину линии контура фигуры. Метод setOutlineColor () задаёт цвет линии контура фигуры.
Угол поворота фигуры 90 градусов
Метод setRotation () устанавливает угол поворота фигуры с центром поворота в точке координат.
Вращение фигуры с центром вращения левая верхняя точкаПеремещение точки координат
Метод setOrigin () изменяет координаты точки координат и позволяет переместить их с левой верхней точки в центр фигуры.
Смещение центра вращения в центр прямоугольникаУстановка текстуры для прямоугольника
Для переменной textur установлен тип Texture, который даёт возможность с помощью метода LoadFromFile () загрузить картинку в переменную.
Файл картинки должен находится в каталоге проекта visual studio c++.
Каталог проекта
Метод setTexture (&) устанавливает текстуру для прямоугольника.
Прямоугольник с текстурой в виде кирпичаИзменяет угол поворота фигуры на один градус
Метод rotate () изменяет угол поворота фигуры. Метод move () изменяет положение фигуры по горизонтали и по вертикали.
Анимация перемещения и вращения прямоугольника
В некоторых случаях, когда приложение выполняется быстро, вы можете наблюдать визуальные артефакты. Причина заключается в том, что частота обновления вашего приложения не синхронизирована с вертикальной частотой монитора, в результате чего, нижняя часть предыдущего кадра накладывается на верхнюю часть следующего кадра.
Решение заключается во включении вертикальной синхронизации методом setVerticalSyncEnabled ().
Включение вертикальной синхронизации
Круг
Рисуем круг с радиусом 100 и разукрашиваем зелёным цветом.
CircleShape тип, который создаёт объект круг circle с методами и свойствами такими же как у прямоугольника.
Увеличиваем масштаб круга по вертикали
Метод setScale () позволяет увеличивать масштаб круга по вертикали и горизонтали.
Устанавливает вершины круга
Метод setPointCount () устанавливает количество вершин у круга.
Многоугольник
ConvexShape тип, который создаёт объект многоугольник convex с методами и свойствами такими же как и у предыдущих фигур, в параметрах переменной convex указываем количество вершин многоугольника.
Метод setPoint () устанавливает координаты для каждой вершины многоугольника.
Перед тем как начнёте указывать координаты вершин многоугольника нарисуйте будущую фигуру на клетчатой бумаге, так будет проще определить координаты вершин для многоугольника. Порядок в котором будут определены точки многоугольника очень важен. Все точки должны быть определены почасовой стрелки либо против часовой стрелки. Если вы будете определять координаты в хаотичном порядке, то форма многоугольника будет неправильной.
Более подробную инструкцию по геометрическим фигурам SFML вы можете увидеть посмотрев видео «Геометрические фигуры SFML C++».