kunjut19, речь не про прорисовку, а про порядок действий.
Результат очередной точки - куда кладётся: сразу на исходное поле или в отдельный массив (а потом из него - обновляем уже)?
Алексей Николаев, поясню про try-catch:
Если ошибку не удалось избежать с использованием обычной логики, то использование любой ловушки только усложнит локализацию проблемы при любых других ошибках в дальнейшем: код не даст компилятору возможности отобразить сведения о возникшей ошибке.
Кстати, в php "собака"/"@" тоже не должна давить подобное. И только в самых простых случаях: например, открытие файла на запись без проверки на существование с флагом w+.
Но обязательно! заранее убедившись в доступе на создание такого файла!
kunjut19, а смена состояния текущей клетки - сразу (лавинообразно из угла) или через стек: сначала всё рассчитываем и заполняем массив, и только после оценки всех клеток, сразу всем меняем статусы (тушим/зажигаем) на вычисленные значения из массива?
Алексей Николаев, если в коде есть try-catch или eval - это плохой код.
Если goto - это просто хаотичный без следования по зависимостям: деструктурная логика исполнения.
Можно сводить точность и исправлять ошибки через взаимную корреляцию всех сделанных измерений.
Не понадобится 3D - ставьте глубину в 0. Проблемы - не вижу.