Да господи... возьми любой алгоритм с препятствиями, алгоритмы типа a* с весами тебе не нужны, самый простой:
выставь приоритеты направлений, то есть 4 переменных с разными значениями,
сделай шаг в приоритетном направлении,
если стена иди в следующее по приоритету, если нет иди в том же направлении,
и... итерация повторяется.
ты главное не с интерфейса начинай, а напиши например массив из 0 и 1 своего лабиринта
и итерируй по нему значения не вложенными циклами, а отдельно по высоте и ширине.
приоритеты можно посчитать как гипотетическая длина между клетками, чем короче, тем больше приоритет