Генератор карт
Я всех приветствую,вообщем снова я,и снова нублю:)
Уже не сколько часов я не могу придумать генератор карт шириной 28 на 28 состоящий из цифр,например Код:
023000 реально туплю ,стындо,но с чего то нужно начинать:)может кто помочь с простейшим алгоритмом нанесения озер ?или рек:) |
Ответ: Генератор карт
Озеро - это некая окружность, порой более сложная. Возьми центральную точку, затем начни "пускать" в разных направлениях "лучи", у которого есть "жизнь", например этот луч может пройти 4-7 точек. Попускай таких много. Как только у тебя будет примерно волосатая точка такая, нужно будет сгладить, а именно, проверять если вокруг есть достаточно воды - тоже стать водой. Таким образом это дело смажеться, и у тебя будет что-то подобие озера.
Реки просто - находишь центр озера, и пускаешь такой же луч как прежде, только тебе нужно будет его плавнее двигать, и с шириной поиграться. Используй смекалку, нежели работать напрямую с массивом. Думай как бы ты это на бумаге логически мог бы сделать, затем подумай как преодолеть от "идеи" к массиву, каким путём. Это нужно развивать способности анализа и креативного мышления, логика хорошо - но без креатива, такие например задачи сложно решать.. Сложнее вариант, но правильнее - это сперва делать высотную карту используя шум перлина, а затем используя высотную, уже "разливать" воду. Но это намного сложнее и вариант, результат конечно будет в разы реалистичнее. |
Ответ: Генератор карт
Подходов тут вагон и маленькая тележка. Гугл подскажет.
Просто чтобы добавить к мокиным примерам, можешь использовать вероятностную модель. Например, для озера - ставишь центральную точку и задаешь вероятность озера закончиться (например, p = 0.25). Дальше делаешь сколько-то шагов от центра озера (это будет его максимальный радиус) и для точки, которая гранчит с водой на каждом шаге с вероятностью 1-p прописываем воду, с вероятностью p ничего не меняем. Сответственно однажды закончившись, дальше в том направлении вода не растет (на самом деле еще от соседних клеток зависит, тут просто надо написать и поиграться). Дальше можно сглаживание применять и т.д. Для рек аналогично вводим вероятности отклонения русла на одну клетку влево-вправо + вероятность разветвления в точке (направление случайно или по твоему закону). |
Часовой пояс GMT +4, время: 08:47. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot