Ответы
Прежде чем перейти к перечислению возможных видов перемещений, стоит подумать о том, в каком виде могут существовать объекты игрового или компьютерного мира. В зависимости от этого можно выделить:
Отдельный объект. Наиболее часто встречающийся способ реализации, когда движущийся объект является представителем отдельного класса(Mob), а на уровне они хранятся в массиве этого класса (Mobs[]). Чаще всего используют динамические массивы. Таким образом, доступ к конкретному мобу обеспечивается обращением к элементу массива (Mobs[15].DoSomething). Это весьма удобно, хотя при очень больших значениях массива возникают трудности в просчетах взаимодействий объектов друг с другом, и требуется дополнительная оптимизация этого просчета.
Объект может быть состоянием мира. Например, если создать двумерный массив значений (bool Map[][]), то наличие или отсутствие в этой клетке объекта может задаваться состоянием ячейки массива (если в клетке 15,10 есть объект, то Map[15][10] = true). По такому принципу реализована игра «Life».
Можно применять смешанные способы. Когда массив отдельных объектов дублируется двумерным массивом на карте, куда может заноситься не только маркер наличия или отсутствия персонажа в клетке, но и его id или указатель, чтобы можно было легко к нему обратиться в общем массиве.