Пчела на работе, разработка игр на SFML C++
Часть 1 “Знакомство”
Со времени своего рождения, в первые 10-15 лет человек совершает множество открытий для себя, которые наполняют его мир новыми впечатлениями и новыми красками. В этот период формируется осознание себя и виденье своего будущего, кем он должен стать и какую профессию освоить. Зачастую наши желания не совпадают с тем выбором, который мы осуществляем, и мечты остаются мечтами, а жизнь из сказки превращается в серую и унылую реку, уносящую нашу молодость и крадущую наше время. И вот седой старик смотрит в окно, погружаясь в прошлое, забывая о настоящем, забыв о том, что жизнь продолжается, и пока мы живы у нас всегда есть шанс осуществить свои мечты.
Не изменяйте своей мечте, пишите код!
Мне бы очень хотелось, чтобы моя работа помогла всем желающим погрузиться в мир написания компьютерных игр. Ведь человек подобно Богу должен творить, в этом, наверное, и заключается смысл жизни - дать жизнь чему-то новому, сделав мир ещё прекрасней!
Пчела на работе
Пчела на работе – простая компьютерная игра, написанная на С++ используя мультимедийную библиотеку SFML.
Желающие ознакомиться с игрою могут:
скачать игру “Пчела на работе” с Telegram канала;
клонировать репозиторий игры “Пчела на работе” с GitHub.
Клонирование репозитория
Не сложно понять, что человек, который только начинает свой путь в роли программиста может не знать таких понятий, как Git или CMake. Я не ставлю своей задачей раскрыть эти вопросы, моя цель показать, как работает механизм адаптации моего проекта к Вашей операционной системе и среде разработки программного обеспечения.
Как клонировать репозиторий в Visual Studio 2022?
1. Перейти по ссылке клонировать репозиторий на интернет-ресурс GitHub.
2. Скопировать в буфер ссылку на репозиторий.
3. Вставить ссылку в Visual Studio в разделе клонировать репозиторий.
4. Скачать мультимедийную библиотеку SFML
5. Разархивировать библиотеку на диск C:\ в папку IT
C:\IT\SFML-2.5.1-windows-vc15-64-bit\SFML-2.5.1
Также обратите внимание чтобы в Visual Studio была установлена рабочая нагрузка “Разработка классических приложений на С++”
Сборка проекта с помощью CMake в Windows
1. Скачиваем и устанавливаем СMake утилиту.
2. Скачиваем и устанавливаем PowerShell
3. Скачиваем и распаковываем zip архив с проектом в удобную для нас папку.
4. Запускаем терминал PowerShell и переходим в папку с распакованным проектом c помощью команды: cd
5. Собираем проект командой: cmake -S . -B build
При желании можно собрать релиз командой: cmake --build build --config Release
6. Заходим в папку build и открываем проект
7. Назначаем проект в качестве запускаемого и можем начинать работать
Описание классов проекта
В состав проекта входит файл main.cpp, в котором находится основная функция для языка программирования С++, функция main. Функция main служит отправной точкой для выполнения программы.
#include "Engine.h" using namespace sf; int main() { // Создаём объект игровой движок Engine myGame; // Запускаем игровой движок myGame.run(); return 0; }
Заголовочный файл Engine.h (игровой движок), является базовым классом компьютерной игры. Все последующие классы выполняют свою работу внутри класса игровой движок.
Заголовочный файл GameMenu.h (игровое меню), класс, который позволяет создавать объекты с пунктами выбора игрового меню.
Файл GameSound.h – это класс, который создаёт объект звуковых эффектов для игры.
Заголовочный файл Player.h – это класс игрового персонажа пчелы, в нём реализованы все свойства и методы, которые анимируют и перемещают объект пчелы.
HealthBarClass.h – класс, который позволяет создавать объекты полоса прогресса.
AssetManager.h – класс управления игровыми ассетами: музыкой, текстурами, картинками.
Animator.h – класс, который создаёт анимацию для объектов типа Sprite.
Класс Engine
#pragma once #include<SFML/Graphics.hpp> #include<memory> class Engine { // Умный указатель на графическое окно std::unique_ptr<sf::RenderWindow> window = std::make_unique<sf::RenderWindow>(sf::VideoMode(1280, 720), L"Пчела на работе", sf::Style::Default); // Игровой фон в виде прямоугольника sf::RectangleShape background = sf::RectangleShape(sf::Vector2f(1280, 720)); // Текстура прямоугольника sf::Texture background_texture; // Метод обработки событий void input(); // Метод обновления переменных, свойств и методов void update(sf::Time const & deltaTime); // Метод отрисовки объектов в графическом окне void draw(); public: // Конструктор Engine(); // Метод запуска игрового цикла void run(); };
В заготовке класса движок, мы с помощью методов делим игровой процесс на основные разделы: обработка событий, обновления значений переменных, отрисовка объектов.
Метод обработки событий, будет обрабатывать нажатие на клавиши стрелок для перемещения пчелы в пространстве, а также открытие игрового меню.
Обновление координат объектов в графическом окне, их свойств, таких как состояния полос прогресса, будет осуществляется в методе обновления значений переменных.
Ну и конечно все изменения будет рисовать в графическом окне метод отрисовки объектов.
Все эти методы будут выполнять свою работу в игровом цикле.
#include "Engine.h" void Engine::input() { // Объект события sf::Event event_play; while (window->pollEvent(event_play)) // Присвоение отловленного события, объекту событий event_play { // Обработка события нажатия на клавишу Esc if (event_play.key.code == sf::Keyboard::Escape) { window->close(); } } } void Engine::update(sf::Time const& deltaTime) { } void Engine::draw() { // Очистка графического окна window->clear(); // Отрисовка фона в графическом окне window->draw(background); // Вывод объектов в графическом окне window->display(); } Engine::Engine() { // Загрузка текстуры background_texture.loadFromFile("image/background.jpg"); // Получение ссылки на текстуру для прямоугольника background.setTexture(&background_texture); } void Engine::run() { // Объявление переменной часы sf::Clock clock; // Цикл работает пока окно открыто while (window->isOpen()) { // Текущее время присваиваем переменной времени dt sf::Time dt = clock.restart(); input(); update(dt); draw(); } }
Более подробную инструкцию вы можете получить посмотрев видео "Игра на SFML C++ Пчела на работе часть1"