Задача «Поиск пути в лабиринте»

Реализовать поиск кратчайшего пути в лабиринте с помощью волнового алгоритма. Для отображения лабиринта, волны и кратчайшего пути использовать библиотеку для работы с консольной псевдографикой.

Исходные данные

Программа использует лабиринт заданный в файле, либо, если файла нет, то запрашивает у пользователя степень заполнения и генерирует лабиринт сама (задача в помощь).

Предельные размеры лабиринта ограничены размерами консоли 80x25.

Каждая клетка может быть проходимой (пусто), либо непроходимой (стена). Есть стартовая позиция и точка выхода. Как вариант усложнения: точек выхода может быть несколько.

Реализация

Для реализации волнового алгоритма использовать очередь.

В режиме по умолчанию программа показывает только лабиринт, стартовую точку, конечную точку.

При нажатии F1 отобразить кратчайший путь. Повторное нажатие F1 отключает отображение пути.

При нажатии F2 показывать волну. Повторное нажатие F2 отключает отображение волны.

Предусмотреть возможность изменения стартовой и конечной точки управляя стрелками с клавиатуры.