Часть 1. "Знакомство"
![](https://habrastorage.org/getpro/habr/upload_files/4d5/306/333/4d53063339a095f2d4af41d73675bef0.jpg)
Со времени своего рождения, в первые 10-15 лет человек совершает множество открытий для себя, которые наполняют его мир новыми впечатлениями и новыми красками. В этот период формируется осознание себя и виденье своего будущего, кем он должен стать и какую профессию освоить. Зачастую наши желания не совпадают с тем выбором, который мы осуществляем, и мечты остаются мечтами, а жизнь из сказки превращается в серую и унылую реку, уносящую нашу молодость и крадущую наше время. И вот седой старик смотрит в окно, погружаясь в прошлое, забывая о настоящем, забыв о том, что жизнь продолжается, и пока мы живы у нас всегда есть шанс осуществить свои мечты.
Не изменяйте своей мечте, пишите код!
Мне бы очень хотелось, чтобы моя работа помогла всем желающим погрузиться в мир написания компьютерных игр. Ведь человек подобно Богу должен творить, в этом, наверное, и заключается смысл жизни - дать жизнь чему-то новому, сделав мир ещё прекрасней!
Пчела на работе
Пчела на работе – простая компьютерная игра, написанная на С++ используя мультимедийную библиотеку SFML.
Желающие ознакомиться с игрою могут:
скачать игру “Пчела на работе” с Telegram канала;
клонировать репозиторий игры “Пчела на работе” с GitHub.
Клонирование репозитория
Не сложно понять, что человек, который только начинает свой путь в роли программиста может не знать таких понятий, как Git или CMake. Я не ставлю своей задачей раскрыть эти вопросы, моя цель показать, как работает механизм адаптации моего проекта к Вашей операционной системе и среде разработки программного обеспечения.
Как клонировать репозиторий в Visual Studio 2022?
1. Перейти по ссылке клонировать репозиторий на интернет-ресурс GitHub.
2. Скопировать в буфер ссылку на репозиторий.
![](https://habrastorage.org/getpro/habr/upload_files/212/1ce/4b9/2121ce4b9e5ab9b755961c409bbb842f.jpg)
3. Вставить ссылку в Visual Studio в разделе клонировать репозиторий.
![](https://habrastorage.org/getpro/habr/upload_files/43c/e22/34f/43ce2234ff9bb60782f548c735a0ef20.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/38d/b5f/80e/38db5f80e1d8853b92bd1a671c7beede.jpg)
4. Скачать мультимедийную библиотеку SFML
![](https://habrastorage.org/getpro/habr/upload_files/f27/cbd/17b/f27cbd17babf23d26441f5b6c0b92165.jpg)
5. Разархивировать библиотеку на диск C:\ в папку IT
C:\IT\SFML-2.5.1-windows-vc15-64-bit\SFML-2.5.1
Также обратите внимание чтобы в Visual Studio была установлена рабочая нагрузка “Разработка классических приложений на С++”
![](https://habrastorage.org/getpro/habr/upload_files/bd3/c6d/f86/bd3c6df8615e0aaf8e62037cd8ef7099.jpg)
Сборка проекта с помощью CMake в Windows
1. Скачиваем и устанавливаем СMake утилиту.
2. Скачиваем и устанавливаем PowerShell
3. Скачиваем и распаковываем zip архив с проектом в удобную для нас папку.
![](https://habrastorage.org/getpro/habr/upload_files/948/eb5/090/948eb509077633d2ce11435a2a69d47d.jpg)
4. Запускаем терминал PowerShell и переходим в папку с распакованным проектом c помощью команды: cd
![](https://habrastorage.org/getpro/habr/upload_files/4e7/8ae/2c7/4e78ae2c74760535d8ea2f11d6e38a75.jpg)
5. Собираем проект командой: cmake -S . -B build
![](https://habrastorage.org/getpro/habr/upload_files/a91/cd2/d42/a91cd2d42123001c936afa4c5b6b1ffa.jpg)
При желании можно собрать релиз командой: cmake --build build --config Release
6. Заходим в папку build и открываем проект
![](https://habrastorage.org/getpro/habr/upload_files/619/0d8/517/6190d8517245b8f03e03e752d85a44be.jpg)
7. Назначаем проект в качестве запускаемого и можем начинать работать
![](https://habrastorage.org/getpro/habr/upload_files/745/9ec/b8a/7459ecb8afc10a190d6ee326a70011e5.jpg)
Назначение классов в проекте
![](https://habrastorage.org/getpro/habr/upload_files/f53/19f/697/f5319f6978d6a1de0989db86995ad817.jpg)
В состав проекта входит файл main.cpp, в котором находится основная функция для языка программирования С++, функция main. Функция main служит отправной точкой для выполнения программы.
#include "Engine.h"
using namespace sf;
int main()
{
// Создаём объект игровой движок
Engine myGame;
// Запускаем игровой движок
myGame.run();
return 0;
}
Заголовочный файл Engine.h (игровой движок), является базовым классом компьютерной игры. Все последующие классы выполняют свою работу внутри класса игровой движок.
Заголовочный файл GameMenu.h (игровое меню), класс, который позволяет создавать объекты с пунктами выбора игрового меню.
![](https://habrastorage.org/getpro/habr/upload_files/b9b/c78/08f/b9bc7808fdf9e0bc3bcda95783e5a807.jpg)
Файл GameSound.h – это класс, который создаёт объект звуковых эффектов для игры.
Заголовочный файл Player.h – это класс игрового персонажа пчелы, в нём реализованы все свойства и методы, которые анимируют и перемещают объект пчелы.
![](https://habrastorage.org/getpro/habr/upload_files/65d/5f3/bdc/65d5f3bdcd09e1db3433b347b8120de5.jpg)
HealthBarClass.h – класс, который позволяет создавать объекты полоса прогресса.
![](https://habrastorage.org/getpro/habr/upload_files/654/808/9ea/6548089ea8c143b96a57c07414582b00.jpg)
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"