Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Puzzle

Игра "Пазл" на C++ с использованием SFML. Pet-проект, в котором я отрабатывал ООП, разделение на слои (UI / логика игры / ресурсы), работу с графикой через SFML и сборку через CMake.

Геймплей

  • Главное меню с выбором картинки
  • Несколько уровней сложности (разные размеры сетки: ×ばつ3, ×ばつ4, ...)
  • Таймер
  • Полноэкранный режим ×ばつ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

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /