Skip to content

Latest commit

 

History

History
38 lines (21 loc) · 4.88 KB

README.md

File metadata and controls

38 lines (21 loc) · 4.88 KB

SeaBoom

Общее описание

Этот репозиторий - маленкая часть моего домашнего проекта. Т.к. проект домашний - комментарии в исходниках есть лишь там, где лично мне, через какое-то время, может быть неясно, почему сделано так, а не иначе.

Проект кроссплатформенный, в первую очередь на мобильные платформы нацелен. Написан на C++, ObjC, Java. Редакторы на C#. Старые видео можно тут посмотреть:

https://www.youtube.com/watch?v=Nl-oXwyt8iQ

https://www.youtube.com/watch?v=0tiVvB1qcFQ

https://www.youtube.com/watch?v=-5DUHQWIa9E

https://www.youtube.com/watch?v=4EYf-mkdARY

Исходники

Roulette

В папке Roulette находится generic класс для выбора произвольного объекта среди группы зарегистрированных.

Roulette/Impl/RouletteImpl - класс-реализация, используется для реализации более высокоуровневых Roulette и PricedObjectRoulette

Roulette/Roulette - класс, в котором регистрируются объекты и шанс их выпадения. Далее, с помощью метода GetNext, можно получать следующий объект с учетом шанса выпадения.

Roulette/PricedObjectRoulette - подобен Roulette, но объекты имеют еще один параметр - стоимость в очках. В PricedObjectRoulette, с помощью метода SetPointsAmount, задается общее количество очков, GetNext выдает следующий объект, на который хватает очков и с учетом шанса выпадения, а также вычитает стоимость выпавшего объекта из общего количества очков.

Roulette/RouletteHistoryMixin - миксина, которая при применении к Roulette, PricedObjectRoulette и подобным добавляет слежение за историей выпадений объектов, позволяя исключить повторное выпадение объекта, если он выпадал недавно, т.е. еще находится в очереди выпавших объектов. Размер очереди задается методом SetHistoryLength.

Creatures

В папке Creature находятся базовые классы для игровых созданий.

ICreatureBase - базовый интерфейс созданий, без возможности назначения высокоуровневых задач(преследование, атака и прочие). Создается посредством применения миксин для представления пространственных объектов(SpatialDBObjectMixin - добавляет возможность манипулировать объектом в пространственной базе данных), миксин физических объектов(добавляет представление объекта в физическом мире, со скоростями, массами и всем остальным), миксин управляемых объектов(IManagedSeekObjectMixin - позволяет управлять объектом, задавая различные скоростные характеристики). Т.е. все эти миксины являются reusable - они используются в различных проектах и на разных объектах.

ICreature - наследник ICreatureBase, главная функция - предоставляет возможность назначения высокоуровневых задач(преследование, атака и прочие). В основном высокоуровневые задачи реализуются посредством класса CreatureMotionSys.

CreatureMotionSys - реализация системы для управления низкоуровневыми двигательными задачами(следовать в определенную позицию, по определенному углу, за определенной целью и прочие), посредством которых реализуются высокоуровневые задачи ICreature. Реализуется через объекты-задачи из библиотеки для управляемых объектов, т.е. весь код тоже reusable.