Начните думать о ваших сущностях высокого уровня и, что более важно, об отношениях между этими сущностями.
Вот некоторые из существительных (сущностей, которые существуют в вашей симуляции):
- Мир
- Город
- Экипажи
- Бизнес
- Деньги
Вот некоторые из глаголов (отношений, которые существуют между вашими существительными):
- Атака / Защита бизнеса
- Приобретение бизнеса
- Обнаружение / проверка бизнес-требований (безопасность, капитал и т. Д.)
- Проверка уязвимости
- Зарабатывание денег
- Отслеживание денег
- Проверка границы города (экипажи атакуют команды в одном городе)
- Расчет возможностей (для атакующих команд)
Я уверен, что, вероятно, есть и другие. Дело в том, что вам нужно оценить, какие критически важные вещи должны существовать, чтобы ваша симуляция была полезной.
Расчеты уязвимости и возможностей должны быть несколько произвольными, основанными на достаточно обоснованном предположении, что вы не математик. Определите, что вы считаете более важным в процессе принятия решений, через который проходит команда.
Существительные действительно довольно прямые. Вам просто нужно внимательно рассмотреть ваши структуры данных для размещения различных объектов. Подумайте, как вы намереваетесь использовать объекты и использовать структуры данных, которые максимизируют производительность, а также вашу способность проявлять гибкость в случае, если позже в процессе разработки возникнут изменения.
Классы отношений обычно создают трудности, потому что может быть трудно точно описать, что делает процесс. Попытайтесь следовать SRP (принципу единой ответственности - объект должен нести единственную ответственность, и эта ответственность должна быть полностью заключена в классе). Тем не менее, не будь фанатом об этом либо. Иногда это делает больше с тех пор, когда два тесно связанных процесса должны быть объединены.
GL