Часть 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 "Engen.h"
using namespace sf;
int main()
{
// Создаём объект игровой движок
Engen myGame;
// Запускаем игровой движок
myGame.run();
return 0;
}
Заголовочный файл Engine.h (игровой движок), является базовым классом компьютерной игры. Все последующие классы выполняют свою работу внутри класса игровой движок.
Заголовочный файл GameMenu.h (игровое меню), класс, который позволяет создавать объекты с пунктами выбора игрового меню.
Файл GameSound.h – это класс, который создаёт объект звуковых эффектов для игры.
Заголовочный файл Player.h – это класс игрового персонажа пчелы, в нём реализованы все свойства и методы, которые анимируют и перемещают объект пчелы.
HealthBarClass.h – класс, который позволяет создавать объекты полоса прогресса.
AssetManager.h – класс управления игровыми ассетами: музыкой, текстурами, картинками.
Animator.h – класс, создаёт анимацию для объектов типа Sprite.
Класс Engen
#pragma once
#include<SFML/Graphics.hpp>
#include<memory>
class Engen
{
// Умный указатель на графическое окно
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:
// Конструктор
Engen();
// Метод запуска игрового цикла
void run();
};
В заготовке класса движок, мы с помощью методов делим игровой процесс на основные разделы: обработка событий, обновления значений переменных, отрисовка объектов.
Метод обработки событий, будет обрабатывать нажатие на клавиши стрелок для перемещения пчелы в пространстве, а также открытие игрового меню.
Обновление координат объектов в графическом окне, их свойств, таких как состояния полос прогресса, будет осуществляться в методе обновления значений переменных.
Ну и конечно все изменения будет рисовать в графическом окне метод отрисовки объектов.
Все эти методы будут выполнять свою работу в игровом цикле.
#include "Engen.h"
void Engen::input()
{
// Объект события
sf::Event event_play;
while (window->pollEvent(event_play)) // Присвоение отловленного события, объекту событий event_play
{
// Обработка события нажатия на клавишу Esc
if (event_play.key.code == sf::Keyboard::Escape) { window->close(); }
}
}
void Engen::update(sf::Time const& deltaTime)
{
}
void Engen::draw()
{
// Очистка графического окна
window->clear();
// Отрисовка фона в графическом окне
window->draw(background);
// Вывод объектов в графическом окне
window->display();
}
Engen::Engen()
{
// Загрузка текстуры
background_texture.loadFromFile("image/background.jpg");
// Получение ссылки на текстуру для прямоугольника
background.setTexture(&background_texture);
}
void Engen::run()
{
// Объявление переменной часы
sf::Clock clock;
// Цикл работает пока окно открыто
while (window->isOpen())
{
// Текущее время присваиваем переменной времени dt
sf::Time dt = clock.restart();
input();
update(dt);
draw();
}
}
Продолжение следует ...
Более подробную инструкцию вы можете получить посмотрев видео "Игра на SFML C++ Пчела на работе часть1"