Аналоговые часы SFML C++
Мультимедийная библиотека SFML лечит головную боль не только новичкам в игровой индустрии, но и преподавателям информатики в школе. Основная задача которых состоит в том, чтобы не только научить ребёнка программировать, но и привить любовь к разработке приложений. Используя простые графические объекты и их методы можно за короткое время создать прототип игры или симулятор физико-математических процессов. В этой статье мы рассмотрим разработку аналоговых часов на C++ используя библиотеку SFML.
Инструменты для разработки
- Visual Studio c установленным пакетом "Разработка классических приложений на С++".
- Мультимедийная библиотека SFML.
- Подключаемый файл заголовка SFMLWorldTime.
- Шрифты и программный код для самостоятельной разработки или репозиторий.
Подготовительная работа
Подключаем к Visual Studio библиотеку SFML и копируем шаблон кода библиотеки SFML в редактор кода.
Добавляем в папку проекта файлы SFMLWorldTime.h и SFMLWorldTime.cpp и папку со шрифтами lib.
Добавляем в проект файлы SFMLWorldTime.h и SFMLWorldTime.cpp.
В код шаблона программы прописываем вызов заголовочного файла SFMLWorldTime.h.
Создаём объект электронные часы и рисуем их в графическом окне.
Часовых дел мастер
Рисуем окружность т.е. контур будущих часов
Подключаем макрос математических констант
Подключаем заголовочный файл математических функций
Объявляем объекты и переменные для рисования рисок часов.
Создаём объект круга, который и будет отображать окружность в виде рисок.
Объявим и инициализируем вещественную переменную значением расстояния от центра часов до расположения рисок.
Создадим вещественную переменную размера рисок т.е. радиуса объекта круга PointMin
Обозначим переменными координаты центра окружности
Объявим переменные координат рисок
Рисуем риски в графическом окне
В формуле вычисления координат рисок, используем математическую константу числа Пи - M_PI.
Объявим объекты и переменные для отображения циферблата часов
Загрузим шрифт для отображения цифр, создаём объект шрифта fontTime и загружаем в него шрифт dockerthree.ttf
Создаём объект текста и задаём ему параметры: шрифта, размера и цвета.
Объявляем переменные координат текстового объекта, для отображения цифр.
Рисуем циферблат в графическом окне
Объявляем объекты для стрелок часов и настраиваем их.
Графическое отображение стрелок базируются на объекте формы прямоугольника RectangleShape. Настраиваем объекты с помощью функции InitRect (), которая находится в заголовочном файле SFMLWorldTime.h.
Рисуем стрелки часов
Метод setRotation вращает объект вокруг заданной оси, согласно установленному углу поворота в параметрах метода.
Рассчитаем угол поворота стрелок.
Секундная стрелка повернется на угол равный 360 °/60 сек = 6 ° (вся окружность 360 ° по ней распределяем 60 секунд) и умножаем на текущее значение времени секунд.
Минутная стрелка за это время повернется на 360 °/60 мин = 6 ° умноженных на текущее значение времени минут и добавляем 6 °/60сек=0.1 ° умноженный на количество пройденного времени секунд.
Часовая стрелка за это время повернётся на 360°/12 часов = 30 ° умноженных на текущее время часов и добавляем 30 °/60мин=0,5° умноженным на пройденное время минут.
Более подробную инструкцию вы можете получить посмотрев видео "Аналоговые часы SFML C++".