![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ALexusB |
![]()
Сообщение
#1
|
Разработчик ВМЛ-КВЛ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Admin Сообщений: 16,342 Регистрация: 2-November 04 Пользователь №: 3 ![]() |
Народ, нужна помощь в одной интересной задаче для нужд игры про "кораблики" не на стром-2.х
Уперся в генерацию (роботом) дна (мелей) Дано: Есть матрица, например, 64х64 или 100х100, не важно, хоть 100х60 клеток. Значение клеток - это глубина в метрах. Для простоты считаем до 7 метров, далее для корабля не важно - "нет дна". То есть 1 2 3 4 5 6 7 видов значений. переходы глубин плавные, то есть 1-2 2-3 и тп, 1-7 или 1-3 быть не может. Рандомно задаются: - место мели в матрице - размер и форма мели - ширина полоски перехода на каждую глубину (то есть ширина 1-2, 2-3... можно одну на всех - это частный случай) - число мелей (они могут быть в нескольких местах или накладываться, тогда переходы будут 1-2-3-4-3-2-1 или 1-2-1, зависимо от расстояния) Требуется Алгоритм генерации мелей амебообразной формы (из значений 1) с плавным переходом в 7 Решение ??? Какие есть идеи? Понятно, что вариант наколбасить все ручками рабочий - редактор такой сделать не вопрос, он у мя уже почти готов. Но хочется, чтоб само делало, каждый раз разное |
![]() ![]() |
Belphegor |
![]()
Сообщение
#2
|
ou Le Fantome du Louvre ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 1,232 Регистрация: 4-September 07 Пользователь №: 11,932 ![]() |
Попробовал смоделировать в эксельке. Не до 7, до 5.
Получается примерно так. Код 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 4 4 3 3 3 3 3 3 3 3 3 2 2 2 2 3 3 3 3 3 4 5 5 5 5 4 4 3 3 3 3 3 3 3 3 3 2 2 2 2 3 3 3 3 3 4 5 5 5 5 4 4 3 3 3 3 2 2 2 2 3 2 2 2 2 2 2 3 3 3 4 5 5 5 5 4 4 3 3 3 3 2 1 2 2 3 2 2 2 1 1 2 3 3 3 4 5 5 5 5 4 4 3 3 3 3 2 2 2 2 2 2 2 1 1 1 2 3 3 3 4 5 5 5 5 4 4 3 3 3 3 2 2 2 2 2 1 2 2 2 2 2 3 3 3 4 5 5 5 5 4 4 3 3 3 3 3 3 3 2 1 2 2 3 3 3 3 3 3 3 4 5 5 5 5 4 4 4 4 4 4 3 3 3 2 2 2 2 3 3 3 3 3 3 3 4 5 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 4 4 4 4 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Суть такая: заполняем квадрат 25*25 пятерками. Потом берем квадрат 16*16, сделанный из четверок и заменяем пятерки на четверки в случайном месте. Но для плавного перехода нужно сделать проверку сперва: чтоб квадрат (16+2)*(16+2) (по полю с каждой стороны) с теми же центральными клетками, что и квадрат 16*16, не имел шестерок (у меня их вообще нет, но это для всех справедливо). Потом берем квадрат 9*9, берем рандомный центр снова, проверяем, нет ли пятерок в квадрате 11*11 с тем же центром, что и у 9*9. Таких квадратов можно поставить несколько. И так далее. В эксельке заполнял, конечно, сам, но может, комп тоже способен посчитать. Во всяком случае, ничего больше в голову не приходит. Прочитал сам. что написал. Сумбурно... Но вдруг покажется интересным. Короче метод "выкапывания ямы". Копать есть смысл только в уже выкопанном, а слишком глубоко в одном месте копать нельзя - осыпется. ![]() ____________ А, если не секрет, где это должно использоваться? Что за "кораблики"? |
![]() ![]() |
Текстовая версия | Сейчас: 20th June 2024 - 20:32 |