Наследование / Дизайн интерфейса игры

Я разрабатываю игру, но не могу разобраться в структуре наследования. Обычно я неплохо разбираюсь в этом, но в этом слишком много совпадений, и я не могу определиться со всем.

Я хочу моделировать парусные суда - вспомните Age of Sail. Предположительно поэтому все расширяет класс Vessel.

Существует несколько типов стилей судов: гребные (галеры, каноэ), квадратные, носовые и кормовые, с различным поведением. Каждый из них подразделяется на несколько других типов. Я не могу решить, должна ли это быть серия интерфейсов или расширений Vessel. Заметьте также, что может быть некоторая перекрестная связь (судно может быть как гребным, так и квадратным), что наводит меня на мысль об интерфейсах?

Корабли также ведут себя по-разному: торговые суда, военные, каперы, пираты. Я действительно не могу понять, должен ли это быть интерфейс или расширение другого класса. Однако в этом случае нет кроссовера.

Наконец, есть несколько вариантов поведения, которые могут иметь отдельные корабли. Торговцы могут быть в колонне (защищаться) или независимыми (убегать). Военные почти всегда атакуют, если не имеют сильного вооружения ... но могут работать флотом, эскадрильей или самостоятельно. Каперы и пираты нападают только в том случае, если они слабее - обычно по отдельности, но иногда парами.Я предполагаю, что это тоже должен быть интерфейс?

Моя большая проблема в том, что каждый стиль корабля (фрегат, линкор и т. Д.) Может выполнять почти любую из этих ролей, поэтому я не могу построить простую прочную структуру наследования. Фрегат не может продлить маневрирование, потому что некоторые из них - каперы. Шлюп не может выдвигаться с прямоугольным такелажем, потому что некоторые из них имеют продольный такелаж. и т.д.

Любые мысли приветствуются, я немного не в себе. Спасибо

5
задан Bhushan 3 January 2012 в 15:24
поделиться