Я создаю игру-змею в C # / XNA для удовольствия, но это хорошая возможность попрактиковаться в хорошем дизайне объектов.
Змеиный объект
Есть объект-змея, который по сути является связанным списком, каждый узел является вектором с координатами X & Y, которые относятся к карте.
Также есть несколько свойств, таких как только что съел змея (в этом случае последний узел тела не удаляется для этого обновления), направление, в котором движется змея и т. Д.
Объект карты
Карта (игровая область) хранит свое содержимое внутри двумерного массива целых чисел - использование массива примитивов для хранения карты должно снизить потребление памяти и быстрее (и проще) выполнять итерации по сравнению с массивом векторов.
Содержимое определяется внутри перечисления {Пусто, Стена, Змея, Еда}, которое затем сохраняется внутри массива в соответствующих координатах.
Ссылка также сохраняется на объект змеи на карте, так что каждый вызов рендеринга проходит по узлам, составляющим змею, и отображает ее в правильном положении на карте.
Вопрос !!
У меня вопрос ... это слишком тесная связь, и в этом случае есть какие-либо предложения (например, схема наблюдателя), или это нормально для этой ситуации ...
Я пытался придумать, как отделить змею от необходимости знать систему координат, используемую картой, но не могу придумать, как заставить ее работать и сохранять позиции каждого узла относительно. друг другу.
Любые ответы приветствуются, ура!