![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Помните в сапёре виндовом если "под" кнопкой ничего "нет", а рядом расположено множество таких же пустых мест, то все кнопы открываются(Плохо объяснил, да?). Как вот так сделать? Идей нет совсем!
![]() P.S. Вот тут картинки, кто не понял вопроса: ДО : Это сообщение отредактировал(а) Coderr - 2.6.2006, 16:49 Присоединённый файл ( Кол-во скачиваний: 56 ) ![]() --------------------
Кодинг - это стиль жизни! |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
И ПОСЛЕ :
Это сообщение отредактировал(а) Coderr - 2.6.2006, 17:00 Присоединённый файл ( Кол-во скачиваний: 51 ) ![]() --------------------
Кодинг - это стиль жизни! |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
делай рекурсивный обход всех соседних кнопок
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
А по подробнее можно про РЕКУРСИЮ? ![]() --------------------
Кодинг - это стиль жизни! |
|||
|
||||
D4rk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.5.2006 Где: Самара Репутация: нет Всего: нет |
В-общем, алгоритм - как для обхода графа в глубину... Просмотрел кнопку -> выбрал любую непросмотренную соседнюю -> просмотрел -> выбрал любую непросмотренную соседнюю и т.д. пока не наткнешься на кнопку, у которой нет непросмотренных соседних кнопок -> возвращаешься к предыдущей кнопке и т.д. пока не вернешься в начало маршрута
|
|||
|
||||
ConstantinXXX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 27.5.2006 Где: U.S.A. :-) Репутация: нет Всего: 0 |
Coderr, Исходничек можеж кинуть суда конечно если не жалко.
![]() ![]() --------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info |
|||
|
||||
AriX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Я по-другому делал.
Проходишься по всему полю и ищешь поля, вокруг которых ничего нет и которые в данный момент открыты. Открываешь все 8 полей вокруг каждого нулевого поля. Причем, нужен еще флаг, который будет устанавливаться в true, если хотя бы одно нулевое открытое поле найдено. В конце цикла, проверяешь, равен ли флаг true. Если да, цикл начинается сначала. Нет - выходим. Вот и все. Вот код, который был у меня (думаю, разобраться можно):
|
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Я тут вчера ночью подумали понял, что РЕКУРСИЯ это круто! Я ей ни разу до сееле не использовал и поэтому как-то не подумал про неё! ЩА буду писать процедуру! =)
--------------------
Кодинг - это стиль жизни! |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
МЛИН! Рекурсия-это круто! Но если слишком большое поле, то прога подвисает... Что делать? ProcessMessages опробован, но он вопроса не решает....
![]() --------------------
Кодинг - это стиль жизни! |
|||
|
||||
FRAGNATIC |
|
|||
![]() ..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
в таких случаях код выкладывают
Надо оптимизировать просто твою процедуру и всё =) |
|||
|
||||
Addmin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 3.2.2006 Где: сослан в Сибирь Репутация: нет Всего: 15 |
Или вынести рекурсию в отдельный поток.
-------------------- SimpleFit.ru - блог о том, как заниматься спортом нормальным людям -- Стимул работы в Сибири - комары. |
|||
|
||||
TheCetus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 9.3.2006 Репутация: 2 Всего: 2 |
алгоритмы уже есть... поиши на гугле растровые методы заливки Брезенхема...
|
|||
|
||||
Coderr |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
В моём сапёре я задал тип My, состоящий из панели и картинки:
картинка располагается на панели. Во время отжатия правой кнопки нада загрузить картинку в Image, который лежит на панели, над которой произошло нажатие. Я делаю так:
-не сработало! ![]()
, запустил, нажал - на лейбле либо "0+0", либо "9+9". Как сделать, чтоб всё правильно определялось? --------------------
Кодинг - это стиль жизни! |
||||||
|
|||||||
fess |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 17.2.2005 Где: г. Мурманск, Росс ия Репутация: 2 Всего: 3 |
Не знаю, насколько это эффективно, но при малых размерах должно быть быстро...
Примерная идея/алгоритм: 1. От данной кнопки стоишь линию вверх, вниз. влево, вправо (в том смысле, что помечаешь эти поля как-либо), до тех пор, пока у тебя пусто по этой прямой.... 2.Затем, пробегаешь по всем клеткам, и если встречаешь точку на этой линии (помеченную в п.1 ) то делаешь тоже, что и пункте 1. 3. Считаешь, сколько помечено точек в пункте 2, запоминешь... выполняешь его ещё раз... снова считаешь сумму точек... если совпало, то открываешь помеченные, если нет - выполняешь далее пункт 2... и так до тех пор, пока сумма не совпадёт... --------------------
Компьютер не подчиняется законам физики. Только в нём глюки возникают из ничего, файлы исчезают в никуда, а объём измеряется в метрах и называется весом. |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Нет! Нада найти координату панели, которой принадлежит имейдж, по которому произошло нажатие!
--------------------
Кодинг - это стиль жизни! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |