Геометрические фигуры мультимедийной библиотеки SFML для разработки игр на C++

5f9544ef381a5d2f1bddcf079913dab2.png

Перед тем как приступить к рассмотрению темы, геометрические фигуры, разберём каркас программы на С++, которая использует библиотеку SFML.

Для работы с кодом мы будем использовать Visual Studio 2022 и библиотеку SFML. Как подключить библиотеку SFML к Visual Studio 2022 вы можете узнать посмотрев видео инструкцию «Подключение библиотеки SFML C++»

Каркас программы библиотеки SFML

0b3133e0e6c4f57b5ab65c7494ecb858.jpg65e8c36584a25f3540a9d2c92f3a2e20.jpg

Переменной window назначен тип графическое окно (RenderWindow).

Параметр VideoMode (1500, 900), определяет размер графического окна по горизонтали 1500 и по вертикали 900.

7a5829b64036f5331781f8e332f29fe5.jpg

L«Новый проект» — название графического окна, Style: Default — стиль окна по умолчанию.

Цикл while (window.isOpen ()) будет работать пока графическое окно открыто.

В переменную event типа Event, сохраняется событие, например нажатие мышкой на крестик окна или нажатие клавиши на клавиатуре.

Цикл while (window.pollEvent (event)) включается в работу когда возникает какое-либо событие и записывает его с помощью метода pollEvent () в переменную event. Далее в теле цикла идёт обработка событий, в один момент времени может быть обработано только одно событие.

Обработчик события нажатие на крестик графического окна, метод Close() закрывает окно.Обработчик события нажатие на крестик графического окна, метод Close () закрывает окно.Очистка графического окнаОчистка графического окна

Метод clear (Color: Blue), очищает графическое окно и разукрашивает его в синий цвет.

Вывод рисунка на экранВывод рисунка на экран

Метод display () выводит нарисованные объекты методом draw () в графическое окно.

Прямоугольник

Переменная recr типа прямоугольник с размерами 200 х 100Переменная recr типа прямоугольник с размерами 200×100

RectangleShape тип, который создаёт объект прямоугольник с методами и свойствами изменения его параметров, а также его анимации.

Очистка графического окна, отрисовка двух объектов recr, rect1 и вывод объектов в графическое окноОчистка графического окна, отрисовка двух объектов recr, rect1 и вывод объектов в графическое окно

Метод draw () рисует объекты в графическом окне, при отсутствии метода draw () и display (), графическое окно будет пустым, методы размещаются внутри цикла while (window.isOpen).

Задаёт цвет заливки в формате RGBЗадаёт цвет заливки в формате RGB

Метод setFillColor () устанавливает цвет заливки прямоугольника.

Варианты заливки: обычная, RGB, RGB c альфа каналомВарианты заливки: обычная, RGB, RGB c альфа каналомУстановка координат прямоугольникаУстановка координат прямоугольника

Метод setPosition () задаёт координаты прямоугольника, для точки координат фигуры, которая по умолчанию находится в верхнем левом углу фигуры.

setPosition(300,100)setPosition (300,100)Толщина и цвет линии контура прямоугольникаТолщина и цвет линии контура прямоугольника

Метод setOutlineThickness () устанавливает толщину линии контура фигуры. Метод setOutlineColor () задаёт цвет линии контура фигуры.

67cdd97a79738803d7962c9a8250304b.jpgУгол поворота фигуры 90 градусовУгол поворота фигуры 90 градусов

Метод setRotation () устанавливает угол поворота фигуры с центром поворота в точке координат.

d350da8df6928402b31edc3eedb968a8.jpgВращение фигуры с центром вращения левая верхняя точкаВращение фигуры с центром вращения левая верхняя точкаПеремещение точки координатПеремещение точки координат

Метод setOrigin () изменяет координаты точки координат и позволяет переместить их с левой верхней точки в центр фигуры.

Смещение центра вращения в центр прямоугольникаСмещение центра вращения в центр прямоугольникаУстановка текстуры для прямоугольникаУстановка текстуры для прямоугольника

Для переменной textur установлен тип Texture, который даёт возможность с помощью метода LoadFromFile () загрузить картинку в переменную.

Файл картинки должен находится в каталоге проекта visual studio c++.

Каталог проектаКаталог проекта

Метод setTexture (&) устанавливает текстуру для прямоугольника.

Прямоугольник с текстурой в виде кирпичаПрямоугольник с текстурой в виде кирпичаИзменяет угол поворота фигуры на один градусИзменяет угол поворота фигуры на один градус

Метод rotate () изменяет угол поворота фигуры. Метод move () изменяет положение фигуры по горизонтали и по вертикали.

Анимация перемещения и вращения прямоугольникаАнимация перемещения и вращения прямоугольника

В некоторых случаях, когда приложение выполняется быстро, вы можете наблюдать визуальные артефакты. Причина заключается в том, что частота обновления вашего приложения не синхронизирована с вертикальной частотой монитора, в результате чего, нижняя часть предыдущего кадра накладывается на верхнюю часть следующего кадра.

Решение заключается во включении вертикальной синхронизации методом setVerticalSyncEnabled ().

Включение вертикальной синхронизацииВключение вертикальной синхронизации

Круг

Рисуем круг с радиусом 100 и разукрашиваем зелёным цветом.Рисуем круг с радиусом 100 и разукрашиваем зелёным цветом.e1cda66da078c7364d79654d15aa9f68.jpg

CircleShape тип, который создаёт объект круг circle с методами и свойствами такими же как у прямоугольника.

Увеличиваем масштаб круга по вертикалиУвеличиваем масштаб круга по вертикалиed3c7bdbcc2043008434880f526ece82.jpg

Метод setScale () позволяет увеличивать масштаб круга по вертикали и горизонтали.

Устанавливает вершины кругаУстанавливает вершины кругаf0aecf16b4f3de66d7406ab71cfc2a96.jpg

Метод setPointCount () устанавливает количество вершин у круга.

Многоугольник

a9ba85db7509f3df3128c6f942bea0f6.jpgb80b351bf57c0e03005403f0b79433b3.jpg

ConvexShape тип, который создаёт объект многоугольник convex с методами и свойствами такими же как и у предыдущих фигур, в параметрах переменной convex указываем количество вершин многоугольника.

Метод setPoint () устанавливает координаты для каждой вершины многоугольника.

Перед тем как начнёте указывать координаты вершин многоугольника нарисуйте будущую фигуру на клетчатой бумаге, так будет проще определить координаты вершин для многоугольника. Порядок в котором будут определены точки многоугольника очень важен. Все точки должны быть определены почасовой стрелки либо против часовой стрелки. Если вы будете определять координаты в хаотичном порядке, то форма многоугольника будет неправильной.

ef50d22e20367f06f7507c6061fc3499.jpg

Более подробную инструкцию по геометрическим фигурам SFML вы можете увидеть посмотрев видео «Геометрические фигуры SFML C++».

© Habrahabr.ru