Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
14-89557
ИМХО
2003-10-07 18:54
2003.10.27
Москва, цены, гостиницы


1-89365
Кен
2003-10-01 04:33
2003.10.27
Как сделать чтобы через определённый промежуток времени


14-89554
SergP
2003-09-19 21:08
2003.10.27
Delphi глючит...


1-89247
XAMLO
2003-10-14 20:16
2003.10.27
Ошибка сохранения файла!?


6-89420
Delphin
2003-09-01 18:31
2003.10.27
Как через Proxy соедениться с почтовым сервером (Рор3) ?