Я разрабатываю игру, но не могу разобраться в структуре наследования. Обычно я неплохо разбираюсь в этом, но в этом слишком много совпадений, и я не могу определиться со всем.
Я хочу моделировать парусные суда - вспомните Age of Sail. Предположительно поэтому все расширяет класс Vessel.
Существует несколько типов стилей судов: гребные (галеры, каноэ), квадратные, носовые и кормовые, с различным поведением. Каждый из них подразделяется на несколько других типов. Я не могу решить, должна ли это быть серия интерфейсов или расширений Vessel. Заметьте также, что может быть некоторая перекрестная связь (судно может быть как гребным, так и квадратным), что наводит меня на мысль об интерфейсах?
Корабли также ведут себя по-разному: торговые суда, военные, каперы, пираты. Я действительно не могу понять, должен ли это быть интерфейс или расширение другого класса. Однако в этом случае нет кроссовера.
Наконец, есть несколько вариантов поведения, которые могут иметь отдельные корабли. Торговцы могут быть в колонне (защищаться) или независимыми (убегать). Военные почти всегда атакуют, если не имеют сильного вооружения ... но могут работать флотом, эскадрильей или самостоятельно. Каперы и пираты нападают только в том случае, если они слабее - обычно по отдельности, но иногда парами.Я предполагаю, что это тоже должен быть интерфейс?
Моя большая проблема в том, что каждый стиль корабля (фрегат, линкор и т. Д.) Может выполнять почти любую из этих ролей, поэтому я не могу построить простую прочную структуру наследования. Фрегат не может продлить маневрирование, потому что некоторые из них - каперы. Шлюп не может выдвигаться с прямоугольным такелажем, потому что некоторые из них имеют продольный такелаж. и т.д.
Любые мысли приветствуются, я немного не в себе. Спасибо