Попытаюсь я, если можно...

Самое простое, для начала.
Мы имеем объект "а" на одном конце воображаемой траншеи и объект "б" на другом, вектор аб и должна быть траншея в итоге. Оба объекта имеют свои координаты, по ним высчитывается вектор и количество отдельных окопчиков которыми надо выложить всю траншею (отдельный окопчик, для начала - это один объект, самый длинный окопчик, что нам дали "МГ") . Функция высчитывает это количество периодичность (чтобы в стык) и генерит итоговый окоп. Объект "а" и "б" - это изменяемые переменный, которые нужно заложить в интерфейс траншеекопателя, чтобы прога явно понимала между "японским танком Хоа" и "японской пушкой" должен быть окоп и уже их искать в файле мис и работать.
Развитие.
Умея считать количество отдельных окопчиков можно закладывать параметр - "ответвление", т.е. через какое количество ставить объект "окоп-перекресток" и развивать этот отросток перпендикулярно основной траншее (этот параметр тоже нужно вводить в интерфейс). Окончания окопчиков закрывать объектом "окоп-затычка".
Развитие.
По принципу выше (период вставки и расстояние от окопа), можно ставить объекты окопавшаяся пушка - это объект окопчик с ящиком боеприпасом и пушка в нем (было бы замечательно, чтобы пушку можно было выбирать).
и т.д
...

а (==============================) б

а(=====||=====||=====||=====||=====)б
|| || || ||
- - - -

(А) (А) (А)

а(=====||=====||=====||=====||=====)б
|| || || ||
- - - -


// выглядит немного не так как хотелось ну думаю понятно что ответвления и пушки находятся на расстоянии друг от друга.