Skip to content

Necollaz/Test_Figure_Triplets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 Figure Triplets Demo (Match-3 с особыми фигурами)

📌 О проекте

Прототип мини-игры в духе “собери три”:

  • На поле сверху с заданным интервалом спавнятся фигуры разных форм и цветов, которые падают в контейнер.
  • Игрок кликом добавляет фигуры в Action Bar (полоска слотов сверху).
  • Когда в баре появляется триплет (форма + цвет + категория сладости), они удаляются, может триггерить спец-эффекты.
  • Победа — когда на поле не осталось активных фигур. Поражение — когда Action Bar переполнен.

Demo

Demo

✅ Реализовано

Игровая логика:

  • TripletSpawnListProvider — генерация списка спавна группами по 3.
  • FigureSpawner — корутина спавна с интервалом и горизонтальным рандомом, возврат в пул по окончании.
  • FigureBehaviour — отображение/физика/коллайдер, уведомления о матчах, интеграция со спец-поведением.
  • ActionBarModel / ActionBarView — модель бар-слотов и UI отрисовка.
  • WinLoseEvaluator / EndGame — экраны победы/поражения с плавной анимацией и рестартом.

Спец-поведения (расширяемые):

  • Heavy — увеличивает гравитацию, настраиваемая величина.
  • Sticky — «прилипает» к ближайшей фигуре в радиусе.
  • Explosive — при совпадении убирает соседние элементы в Action Bar.
  • Frozen — блокирует клик до N совпадений триплетов.

Архитектура:

  • SRP/KISS/DRY: каждая сущность решает одну задачу (спавн, совпадения, представление UI, поведение).
  • Пуллинг: ComponentPool + IPooledObject — чистая и безопасная реинициализация.
  • События: читаемые делегаты без Action в публичном API.
  • Константы: все числовые «магии» вынесены в const/SerializeField.

Расширяемость: добавление нового спец-поведения — без правок существующего кода (OCP).

🛠 Использованные технологии и подходы

  • Rigidbody2D, Collider2D, CanvasGroup, Coroutine, SerializeField.
  • Object Pooling: собственный пул компонентов с хуками жизненного цикла.
  • Событийная модель: делегаты и события в совершённом виде глагола.
  • Чистая архитектура: отделение данных (FigureData) от поведения и визуализации.
  • Тестопригодность: инверсия зависимости для RNG, фабрики, адаптеры вместо прямого включения/выключения компонентов.
  • Производительность: минимизация аллокаций при спавне/удалении через пул; короткие корутины и простые структуры данных.

Опционально: проект подготовлен к DI (Zenject).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors