Форум: "Игры";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизRPG: Интересное задание, помогите!!!! Найти похожие ветки
← →
Mover (2003-04-21 13:34) [0]Всем привет! Я сейчас занимаюсь новым проектом онлайновой РПГ игры, и есть необходимость рисовать карты игровых полей. Может кому интересно или хочет помочь нашему проекту:
http://www.rada.gov.ua/laws/pravo/mover/rpg/
Задание заключается в следующем. Надо написать редактор уровней. На вход - картинка (цветная или чернобелая) .bmp или байтовая матрица, на выход цветная картинка и байтовая матрица.
Алгоритм:
Надо "раскрасить" черно-белую картинку, где 0 (черный цвет) - обозначает воду, 1 (белый) - обозначает сушу.
Теперь надо пройтись по всем клеткам и проставить там где суша соединяется с водой - песок (2) на расстоянии неболее 1 клетки. землю (3) - для клеток 2-3 от воды, и траву (4) - для оставшихся клеток внутрь острова. Если это полуостров - то клетки примыкающие к границе "раскрашивать", так если бы остров еще продолжался. Ну а на воде тоже самое, только заменяешь (2) на (5) - неглубокая вода, (3) на (6) - обычная вода и (4) на (7) - глубокая вода... Прилизительно понятно? =)
Сейчас намалюю...
Было так:
001111111111110000
000011101111111100
000111000111111110
001111000011111100
000011110001110000
001000011111110000
011100000000000000
001000000000000000
Стало приблизительно так:
1) "Раскрашиваем"сушу
002222222334332000
000023202233332200
000222000223333220
002232000022322200
000222220002320000
002000022222220000
022200000000000000
002000000000000000
2) "Раскрашиваем"воду
651111111111111556
655511151111111155
655111555111111115
651111555511111155
655511115551115556
551555511111115666
511156555555555666
551556666666666667
3) Соединяем картинки:
652222222334332556
655523252233332255
655222555223333225
652232555522322255
655222225552325556
552555522222225666
522256555555555666
552556666666666667
без разноцветных картинок трудно представить, но можно! =)
Заранее спасибо, исходники присылайте мне почтой или говорите ссылку - выкачаю...
← →
Axis_of_Evil (2003-04-21 14:04) [1]гм ... интересно, но на простое не похоже ... пороюсь чуток, может чего получится
← →
Mover (2003-04-21 15:15) [2]Кстати, это было мое задание на районной олимпиаде по программированию, где я выиграл. исходники на бейсике, жаль утеряны. =((( Столько воды утекло с 1992 года. =)
← →
MBo (2003-04-21 17:11) [3]проверь почту ;)
ew.txt - твоя первая матрица с 0 и 1
← →
MBo (2003-04-21 17:24) [4]В моем коде MaxIntValue и MinIntValue замени на просто Max и Min.
И уточни, что считается "расстоянием между клетками".
Устроит hypot?
← →
Mover (2003-04-21 19:02) [5]Ура! Свершилось... =) Нашлись добрые люди в лице Бориса Новгородова (MBo).
Код на Делфи я оформил и разместил там же на сайте,
со скриншотами.. милости просим! (см. ссылку вверху).
2МВо:
с матрицей и загрузкой я разобрался - нема проблем!
только вот алгоритм немножко не такой, как я представлял...
ведь угловые точки не просчитываются. Если сравнивать мои
отрисовки (что я делал руками) выше, то ты увидишь разницу! =)
ВСЕ РАВНО - огромное спасибо!!!! Я тебя уже записал. =)
← →
Mover (2003-04-21 19:10) [6]2МВо:
Не стал я заменять на Min, Max - потому как мне показалось, и так все замечательно отрабатывает. =) Расстояние между точками я хотел так, чтобы даже соседние точки (матрица 8 точек вокруг) захватывались.
← →
MBo (2003-04-22 06:08) [7]про угловые точки ясно - я поэтому и просил уточнить, как именно считать. Разницу с твоей матрицей видел.
Кстати, в этом случае легко сделать только целочисленную арифметику - код будет побольше, но быстрее (если это существенно, конечно)
> и так все замечательно отрабатывает
да, но функции Max и Min гораздо короче и быстрее - им не нужно иметь дела с открытым массивом, как Max/MinIntValue (которые у меня остались с первого варианта алгоритма).
← →
TButton (2003-04-22 07:20) [8]исправил свою прогу (редактор)... кое что переделал... код для чтения не очень легкий, но в целом понятно... рендеринг карты 500х500 на моем пылесосе (AMD700 192RAM) занимает 4 секунды... с прорисовкой еще по вожусь... заинтересует - маякни...
← →
Mover (2003-04-22 10:33) [9]2MBo:
Думаю при том, как работает твой новый алгоритм - ничего в задаче менять не надо! Супер. мне нравится то, что появилась плавность заполнения, распределения поверхностей. Спасибо огромное еще раз!
2All:
Если кому надо - могу в форуме написать этот кусок кода (без загрузки матрицы).
← →
Mover (2003-04-22 10:39) [10]2TButton:
По поводу размера карты - это вопрос не принципиальный! У меня комп не тормоз, и время не поджимает. Даже если алгоритм немножко медленный, но правильный, то я подожду. Все равно больше времени уйдет не на автоматическую "раскраску", а на прорисовку разных деталей руками. и описание квестов.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c