Skip to content

LomanTrue/Puzzle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Puzzle

Игра "Пазл" на 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.

Установка SFML

  • 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)
  • Управление ресурсами (изображения) через файловую систему

Roadmap

  • Скриншоты и GIF в README
  • Заменить захардкоженный путь к SFML на корректную кросс-платформенную конфигурацию CMake
  • Кнопка перезапуска и возврата в меню прямо во время игры
  • Таблица лучших результатов с сохранением на диск
  • Анимация перемещения кусочков вместо мгновенного перехода
  • CI-сборка через GitHub Actions

About

Sliding puzzle game built with SFML: menu, difficulty levels, timer, sound, custom images. C++20.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages