То, что вам нужно, называется поиском пути. Хотя вы можете создать код самостоятельно, вам может повезти в некоторых уже существующих кодах в сети. Существует несколько алгоритмов поиска пути A *. Я ими не пользовался, поэтому не знаю, насколько они хороши (должно быть).
Я не изучал теорию, но в прошлом я сделал один или два следопыта для своего собственного использования (например, игра, основанная не на тайле). Это либо рекурсивные функции-функции, либо циклы while-for, которые ведут себя как рекурсивный код (чтобы они не переполняли стек).
С помощью рекурсивных функций вы можете уйти во флэш-памяти, вам не нужно будет бегать много врагов. То есть, если вы не используете карту на основе плитки. Если вы (со своим опытом), классы A * в сети должны выполнять тяжелую работу за вас. Существует также тайл высокого уровня - низкоуровневый не-тайл гибрид, но он еще более продвинутый, и ты не сможешь запустить такую игру во флэш-памяти (флэш-память очень медленная, даже как 3).
Если у вас проблемы с производительностью, используйте приемы, которые вы описали ранее, не ищите пути для кого-то, кто не находится в пределах досягаемости и т.д. ...
Редактировать: да, если у вас есть стены, вам нужно предварительно вычислить путь (указать точки пути). Просто зайдите в Google "Pathfinding wiki", чтобы сначала получить некоторую теорию, прочитайте 10-20 страниц википедии, и все будет готово. Найдите несколько примеров кода (повторите поиск) и протестируйте на карте размером 5x5 (матрица, двумерный массив ...)