Открыл глаза... я об этом ещё тогда думал, но тогда это было слишком сложно, а сейчас руки не доходят.
Можно проще - двумерный массив размерности дина*ширина (можно и одномерный) весь забитый нулями. Как только игрок перемещается на карту или идёт по ней, клетку помечаем как проходимую и не рисуем её, иначе - заливаем чёрным. Только с полупроходимыми клетками нужно будет дополнительно повозится.
Реально всё реализовать за 3-7 дней, но не сейчас, сейчас у меня завал...