![]() |
![]() ![]() |
![]() |
indivisible_int |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Женский Репутация: ![]() ![]() ![]() |
Товарищи, помогите, пожалуйста найти ошибку в программе! Для автоматического открытия ячеек
используется рекурсивная процедура OpenCells, но открывается почему-то всё поле. Чесно скажу, в программе использованы алгоритмы из других исходников, поэтому мне не удаётся разобраться в этой куче. (Исходный текст прилагаю) Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Для автоматического открытия ячеек используется рекурсивная процедура OpenCells, но открывается почему-то всё поле. Потому, что надо останавливать рекурсию, как только была отрисована ячейка с NumOfNearMines, отличным от 0. Для этого немного переделываем программу - процедуру DrawOpenedCells делаем функцией, и возвращаем результат:function matrix.DrawOpenedCells(i,j: integer): boolean;, а ту самую рекурсивную процедуру OpenCells меняем вот таким образом: procedure matrix.OpenCells(i,j:integer);, то есть продолжаем рекурсию только тогда, когда только что отрисованная ячейка не содержала цифры... Не забудь поменять и определение метода DrawOpenedCells в описании объекта... |
![]() ![]() |
![]() |
Текстовая версия | 17.06.2025 23:28 |