Недооценка расстояния является «правильной» для A *.
Но, похоже, у вас проблема с глубиной / шириной.
При оценке опций с заданной позиции вы должны добавить их в список опций, чтобы проверить и отсортировать их по баллам. Не должно быть никаких причин, по которым вы бы проверяли опции, доступные в данной позиции, сразу после того, как вы оценили эту позицию - то есть все опции из каждой позиции должны попасть в один и тот же список. Таким образом, когда вы попадаете в тупик, он просто не генерирует дополнительные параметры, и вы продолжаете, беря следующий наиболее высоко оцененный вариант из списка и оценивая его.