Недавно писал работу по волновому) Крайне простой способ:
1. присваиваешь точке старта length = 0, остальным - недостижимое число(например, -1). " Стены" по краям - по желанию.
2. В зависимости от выбранных окрестностей(Мура/Мура порядка или Неймана. В Мура в цикле пишется на пару строк кода больше) проверяешь каждую из ближайших точек(через ifelse/switch - по желанию и возможностям. ). Если она равна -1, присваиваешь ей значение length + 1. Если не равна - 1( т.е если мы уже записали в нее расстояние от точки старта length) - пропускаем.
3. length += 1;
Проще всего себе представить(или вывести на экран) прямоугольное поле(оно же - двумерный массив), где все ячейки изначально равны -1, а в точке старта стоит 0. Через while проверять наличие незаписанных клеток(-1) и запускать вышеописанный цикл.
P.S: тоже сначала пытался на сайтах искать, всюду инвалидный рерайт с заумным кодом на восемь страниц. Плюнул, сел сам разобрался(кода на 20 строк), чего и всем советую.