Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.013 c
3-89161
ZoKr
2003-10-07 07:33
2003.10.27
Сравнение дат


14-89514
Alexey Lipatov
2003-10-09 22:44
2003.10.27
Who is mr. Guru


9-89090
Mover
2003-04-21 13:34
2003.10.27
RPG: Интересное задание, помогите!!!!


3-89176
Lion
2003-10-06 15:11
2003.10.27
Два Detail в QuickReport


3-89106
KSergey
2003-10-06 14:37
2003.10.27
Работа с ADO и обновление DataSet (MS SQL)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский