Пчела на работе, разработка игр на 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 "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»

Телеграмм канал «Программирование игр С++/С#

Предыдущая тема


ссылка на оригинал статьи https://habr.com/ru/post/714764/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *