Найти в Дзене
Менеджер ресурсов и динамический текст на SFML
Когда Вы только начинаете изучать игровую разработку на C++ с использованием SFML, перед многими из Вас встаёт вопрос: как правильно организовать хранение и загрузку игровых ресурсов? Сначала всё кажется просто - загружаешь текстуру здесь, шрифт там, звук где-то ещё. Но когда Ваш проект начинает расти, Вы сталкиваетесь с реальными проблемами. Одна и та же текстурная карта может загружаться в память трижды - для главного меню, для уровня и для редактора. В этом случае память расходуется неэффективно, а код превращается в спагетти из вызовов loadFromFile, разбросанных по всей кодовой базе...
1 месяц назад
Пишем калькулятор на C++ с SFML
Привет, коллеги и доброжелательные критики! Сегодня я решил отвлечься от своей громоздкой работы, чтобы написать что-то простое, но с изюминкой — калькулятор с графическим интерфейсом на C++20 и SFML. Этот проект — не претензия на что-то грандиозное, а скорее лёгкий эксперимент, чтобы вспомнить, как приятно писать код, который сразу видно на экране. Заодно я поделюсь с вами своими мыслями, подходами и парой советов. Давайте разберём, как я это закрутил и почему выбрал именно SFML. Калькулятор — это классика программирования...
2 месяца назад
Чистая архитектура в играх на SFML С++: как разложить код по полочкам
Привет, разработчики! Сегодня поговорим о том, как применить чистую архитектуру (Clean Architecture) в разработке игр с использованием библиотеки SFML. Если вы хотите, чтобы ваш код был модульным, тестируемым и не привязанным к конкретной библиотеке, этот подход для вас. Давайте разберем, как разделить код на слои и сделать вашу игру структурированной и гибкой. Чистая архитектура — это концепция, предложенная Робертом Мартином (дядей Бобом), которая помогает организовать код так, чтобы он был: Идея...
2 месяца назад
Визуализация быстрой сортировки с SFML и C++20
В этой статье мы создадим интерактивную визуализацию алгоритма быстрой сортировки (QuickSort) с использованием библиотеки SFML и современных возможностей C++20. Этот проект поможет вам лучше понять, как работает один из самых популярных алгоритмов сортировки, и покажет, как можно комбинировать графику и алгоритмы для создания образовательных инструментов. Алгоритмы сортировки, такие как QuickSort, могут быть сложными для понимания, особенно для новичков. Визуализация помогает: Если вы хотите не только...
2 месяца назад
CRTP в игровых механиках
В мире разработки игр часто возникает необходимость создавать гибкие и производительные системы. Одним из мощных инструментов в C++ для достижения этой цели является CRTP — Curiously Recurring Template Pattern. Сегодня мы разберём, как CRTP может помочь в создании игровых механик, и реализуем простой пример с использованием библиотеки SFML. CRTP — это шаблонный паттерн в C++, где базовый класс является шаблоном, а производный класс передаётся в качестве параметра шаблона самому себе. Это позволяет...
2 месяца назад
Разработка игр на C++
Разработка игр на C++ — это увлекательный и сложный процесс, который требует понимания как самого языка программирования, так и основ игрового дизайна, математики и компьютерной графики. C++ является одним из самых популярных языков для создания игр благодаря своей производительности и гибкости. В этом введении мы рассмотрим основные этапы и концепции, которые помогут вам начать путь в разработке игр на C++. Прежде чем приступать к созданию игр, важно освоить базовые концепции языка C++: Типы данных и переменные: int, float, double, char, bool и т...
3 месяца назад
Построение минимального дерева Штейнера в евклидовой плоскости
Даны три точки в евклидовой плоскости с координатами A(x1,y1), B(x2,y2) и C(x3​,y3​). Необходимо построить минимальное дерево, соединяющее эти точки с минимальной общей длиной рёбер. Разрешается добавление одной дополнительной точки S(xs,ys)(точки Штейнера), которая может уменьшить суммарную длину соединяющих отрезков. На вход подаются три пары вещественных чисел (x1,y1), (x2,y2), (x3,y3) — координаты заданных точек. Программа должна: Входные данные: Выходные данные: Заданы три точки A(x1,y1), B(x2,y2) и C(x3,y3) в евклидовой плоскости...
3 месяца назад
Паттерны состояния (State) и стратегии (Strategy) в играх на C++
В мире разработки игр существует множество способов улучшить код и сделать его более гибким и масштабируемым. Два популярных паттерна, которые часто используются в этой области, - это паттерны состояния (State) и стратегии (Strategy). В этой статье мы подробно рассмотрим каждый из них и объясним, как их можно применять в разработке игр. Паттерн состояния - это поведенческий паттерн проектирования, который позволяет объекту изменять свое поведение в зависимости от своего внутреннего состояния. Вместо...
3 месяца назад
Простая нейросеть на С++
Этот код реализует простую нейронную сеть на C++ для решения задачи логической операции "И" с использованием алгоритма обратного распространения ошибки. Он демонстрирует основы нейронных сетей и обучает сеть с двумя входами, скрытым слоем из двух нейронов и одним выходом. Данную модель нейронной сети можно адаптировать для решения других задач с использованием разных данных и сетевых архитектур. Архитектура нейронной сети Входы: 2 нейрона (каждый принимает 0 или 1). Скрытый слой: 2 нейрона с функцией активации сигмоида...
5 месяцев назад
Файловый менеджер на С++
Разработка файлового менеджера на C++ - это отличный способ углубить свои знания в области программирования, особенно в работе с файловой системой, обработке пользовательского ввода и создании графического интерфейса (если планируется GUI-версия). Файловый менеджер, по сути, является инструментом для навигации по файловой системе компьютера, позволяющим выполнять различные операции с файлами и директориями: создание, удаление, копирование, перемещение, переименование, просмотр свойств и т.д. C++...
5 месяцев назад
Модули С++20
В стандарте C++20 модули представляют собой новый способ организации и использования кода, который пришел на смену традиционным включаемым заголовочным файлам. Модули предоставляют следующие преимущества: Модули в C++ делают код более структурированным и сокращают количество проблем, связанных с классическими заголовочными файлами, такими как множественные включения и долгие времена компиляции. Для работы с модулями в Visual Studio 2022 установите настройки проекта как на картинке ниже. Убедитесь, что Visual Studio поддерживает модули...
5 месяцев назад
Коррупция
С целью борьбы с теневой экономикой банк решил внедрить объединение N счетов фирмы в один. За одну операцию объединяются 2 счета и банк автоматически перечисляет на свой счет Р% от суммы объединения за выполнение операции и закрытие одного из счетов. Какая наибольшая сумма может остаться на счету фирмы? Скачать код Разберем код по шагам: 1. Ввод данных: Запрашивается ввести количество счетов N, процент отчислений P, и суммы денег на каждом из N счетов, которые сохраняются в векторе balances. 2...
5 месяцев назад