Как реализовать взаимодействие юнита с картой?
================================================

 Делаю симулятор "искусственной жизни". Есть прямоугольное поле, где в каждой точке может быть пустота/стена/еда/кислота/клетка, также есть класс, описывающий генетический код клетки и другие параметры. Клетка может воздействовать на поле (например, есть еду), а также, на другие клетки (например, наносить урон). Хочется узнать, как правильно связать (или реализовать) клетку (юнит) и карту.  

  

Сейчас это реализовано в виде двумерного массива из целых чисел, которые отвечают типу объекта и списка клеток: каждый ход опрашивается каждая клетка списка, ей сообщается, что находится рядом с ней, на основе чего она сообщает, какой ход хочет сделать. После этого, на карту вносятся соответствующие изменения. Например, если клетка перемещается, то в массиве на её месте ставится "пустота", а на новой позиции ставится "клетка". Для взаимодействия с другими клетками, по их координатам на карте находится сам объект в списке и соответственно изменяется. 

 А что вас смущает в вашей текущей реализации?  

Лично мне не ясно только что вы будете делать в случае коллизий. Например, есть две клетки, между которыми находится еда, и они обе решили её съесть. Что произойдет? (другой вариант коллизии - одна клетка собралась атаковать, а другая уходит из атакуемой позиции)  

А по поводу хранения игрового состояния в массиве у меня возражений нет.