Игра "Пазл" на C++ с использованием SFML. Pet-проект, в котором я отрабатывал ООП, разделение на слои (UI / логика игры / ресурсы), работу с графикой через SFML и сборку через CMake.
- Главное меню с выбором картинки
- Несколько уровней сложности (разные размеры сетки: 3×3, 4×4, …)
- Таймер
- Полноэкранный режим 1920×1080
- Кастомизация: можно подложить свои изображения для пазлов и фона меню
- C++20
- SFML — модули
system,window,graphics - CMake ≥ 3.15
Точка входа в main.cpp создаёт окно SFML и передаёт управление функции hello_screen(), реализующей экран меню. Вся остальная логика игры вынесена в подкаталог lib/, подключаемый через add_subdirectory(lib):
Puzzle/
├── main.cpp # Создание окна и запуск
├── CMakeLists.txt # Сборка, подключение SFML
├── lib/ # Игровой движок
│ ├── DSU.cpp # Система непересекающихся множеств для корректного перемещения собранных кусочков
│ ├── button.cpp # Кнопки
│ ├── puzzle.cpp # Кусочки и сам пазл
│ └── application.cpp # Экраны и геймплей
└── pictures/ # Изображения для пазлов и фон
Разделение задумано так, чтобы main.cpp оставался тонким (инициализация SFML), а вся работа с экранами, состоянием игры и отрисовкой жила в lib/ отдельным слоем.
В папке pictures/ лежат изображения:
- Картинки для пазлов —
1.png,2.png, … (или.jpg). Имя — порядковый номер; используется для выбора в меню. - Фон меню — bg.png или bg.jpg.
Чтобы добавить свою картинку для пазла, скопируйте её в pictures/ и назовите следующим числом по порядку. Подойдет, как квадратное, так и прямоугрольное изображение
Проект требует установленную SFML и CMake.
- Windows: скачать с официального сайта и распаковать (например, в
C:/SFML) - Linux (Debian/Ubuntu):
sudo apt install libsfml-dev - macOS:
brew install sfml
git clone https://github.com/LomanTrue/Puzzle.git
cd Puzzle
mkdir build && cd build
cmake ..
cmake --build .Замечание. В текущей версии
CMakeLists.txtпуть к SFML захардкожен какC:/SFML/lib/cmake/SFML(Windows). Если SFML установлена в другое место — поправьте переменнуюSFML_DIRили передайте её при вызове CMake:cmake -DSFML_DIR=/path/to/SFML/lib/cmake/SFML ..В планах — заменить захардкоженный путь на
find_packageс автодетектом.
После сборки в директории build/ появится исполняемый файл project_puzzle.
- Работа с SFML: цикл событий, рендеринг спрайтов, обработка ввода с клавиатуры и мыши, проигрывание звуков
- Применение ООП для разделения сущностей игры (экраны, поле, плитки)
- Реализация и применение системы непересекающихся множеств (DSU) для корректого перемещения вместе собранных кусочков
- Организация CMake-проекта с внешней библиотекой и подмодулем (
add_subdirectory) - Управление ресурсами (изображения) через файловую систему
- Скриншоты и GIF в README
- Заменить захардкоженный путь к SFML на корректную кросс-платформенную конфигурацию CMake
- Кнопка перезапуска и возврата в меню прямо во время игры
- Таблица лучших результатов с сохранением на диск
- Анимация перемещения кусочков вместо мгновенного перехода
- CI-сборка через GitHub Actions