Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 15.11.2012, 09:28   #1
MoteX
Нуждающийся
 
Аватар для MoteX
 
Регистрация: 21.10.2009
Сообщений: 51
Написано 6 полезных сообщений
(для 8 пользователей)
Плохо Генератор карт

Я всех приветствую,вообщем снова я,и снова нублю
Уже не сколько часов я не могу придумать генератор карт шириной 28 на 28 состоящий из цифр,например

023000
020011
020111
001110
011100
где допустим 0 это земля,1 это вода и тд..
реально туплю ,стындо,но с чего то нужно начинатьможет кто помочь с простейшим алгоритмом нанесения озер ?или рек
__________________
(ьсипдоп утэ йатич ен,йенгиф йадартс ен
(Offline)
 
Ответить с цитированием
Старый 15.11.2012, 16:13   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Генератор карт

Озеро - это некая окружность, порой более сложная. Возьми центральную точку, затем начни "пускать" в разных направлениях "лучи", у которого есть "жизнь", например этот луч может пройти 4-7 точек. Попускай таких много. Как только у тебя будет примерно волосатая точка такая, нужно будет сгладить, а именно, проверять если вокруг есть достаточно воды - тоже стать водой. Таким образом это дело смажеться, и у тебя будет что-то подобие озера.
Реки просто - находишь центр озера, и пускаешь такой же луч как прежде, только тебе нужно будет его плавнее двигать, и с шириной поиграться.

Используй смекалку, нежели работать напрямую с массивом. Думай как бы ты это на бумаге логически мог бы сделать, затем подумай как преодолеть от "идеи" к массиву, каким путём.

Это нужно развивать способности анализа и креативного мышления, логика хорошо - но без креатива, такие например задачи сложно решать..

Сложнее вариант, но правильнее - это сперва делать высотную карту используя шум перлина, а затем используя высотную, уже "разливать" воду. Но это намного сложнее и вариант, результат конечно будет в разы реалистичнее.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
MoteX (18.11.2012)
Старый 16.11.2012, 20:27   #3
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Генератор карт

Подходов тут вагон и маленькая тележка. Гугл подскажет.
Просто чтобы добавить к мокиным примерам, можешь использовать вероятностную модель. Например, для озера - ставишь центральную точку и задаешь вероятность озера закончиться (например, p = 0.25). Дальше делаешь сколько-то шагов от центра озера (это будет его максимальный радиус) и для точки, которая гранчит с водой на каждом шаге с вероятностью 1-p прописываем воду, с вероятностью p ничего не меняем. Сответственно однажды закончившись, дальше в том направлении вода не растет (на самом деле еще от соседних клеток зависит, тут просто надо написать и поиграться). Дальше можно сглаживание применять и т.д.
Для рек аналогично вводим вероятности отклонения русла на одну клетку влево-вправо + вероятность разветвления в точке (направление случайно или по твоему закону).

Последний раз редактировалось MiXaeL, 17.11.2012 в 01:08.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
MoteX (18.11.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:18.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com