![]() |
Анимация "салют"
Помогите запрограммировать салют, вот как на картинке:
|
Ответ: Анимация "салют"
Попробывал переписать готовый код с байсика, но устественно ничего не из этого не вышло:
|
Ответ: Анимация "салют"
Ну а что тут создавать?
Делаешь массив точек, у каждой из которых есть параметры x, y и угол поворота. Затем создаешь в случайно выбранной точке экрана штук эдак 50 точек, и даешь каждой случайный угол поворота. Затем вспоминаешь алгебру, и двигаешь циклически точки. ??? PROFIT!!! |
Ответ: Анимация "салют"
да это же... вектора!
|
Ответ: Анимация "салют"
Цитата:
достаточно сделать массив "частиц", где у каждой имеем позицию/скорость, позицию задаём в одной точке, скорость рандомную (в адекватных пределах), дальше обрабатываем массив - меняем позицию по имеющейся скорости+гравитации, затухаем скорость. это подходит для точек, чтобы сделать салют из линий, можно хранить предыдущую позицию каждой частицы и тупо рисовать линию из предыдущей в новую. если необходима одинаковая длина линий, то имея эти же две позиции, можно найти нормализованный вектор от одной к другой, через atan2 вычислить угол, повернуть точки линии через sin/cos им. |
Ответ: Анимация "салют"
Эмм все так описывают как будто это дважды два... ну так что код-то не покажете как составить?
|
Ответ: Анимация "салют"
А для чего голова нужна? Чтобы думать!
Голова+MidletPascalHelp+разжеванный алгоритм+руки=счастие. Если Вас будут вести за ручку, Вы ничему не научитесь. Знать<>уметь. |
Ответ: Анимация "салют"
Цитата:
Я с basic`ом более менее лучше дружу, чем с тем же MP... |
Ответ: Анимация "салют"
Кстати нашел код под FreeBasic
Код:
Dim As Short x(50), y(50), xv(50), yv(50), ox(50), oy(50) Код:
Program explosions; |
Ответ: Анимация "салют"
Antirock, Да я этот код и переделывал, а ошибка в том, что цикл должен начинаться с 0 до 49, как и массив.
|
Ответ: Анимация "салют"
Надо бы сам оригинальный код затестить, может он нерабочий :-D
Опять не пашет, полностью переписал под MP. Ввел новые переменные-массивы x2 и y2 для хранения координат точек, так как в оригинальном коде идет такая схема Код:
line -(x,y), цвет |
Ответ: Анимация "салют"
Надо бы ещё randomize перед каждым random.
"Ввел новые переменные-массивы x2 и y2 " получается, что рисуется точка: drawline(x2[i],y2[i],x[i]+tx,y[i]+ty); |
Ответ: Анимация "салют"
Держи =) Дальше сам, а то мозги поплыли уже. Вроде легкий код, но эти массивы... Написал с нуля, сам.
|
Ответ: Анимация "салют"
Собрался с мозгами доделал код:
Немного подправить код, как нужно и все. |
Ответ: Анимация "салют"
:4to: ОГРОМНОЕ СПАСИБО!!!
|
Ответ: Анимация "салют"
Тебе спасибо, мне хоть нашлось чем заняться :-D
Заодно навыки свои повысил в MP, только начал его изучать. Правда тебе еще надо сделать фейерверк разноцветным и т.д., а в моем коде черт ногу сломит...Не завидую) Завтра может продолжу работу над этим кодом, сделаю чтобы фейерверк был разноцветным, сделаю чтобы он гасил скорость со временем и разберусь почему он квадратный(не сильно заметно но все же, видать из-за округления...) |
Ответ: Анимация "салют"
Код подогнал под себя:
или вот: AntiRock, у тебя получается много ненужных repaint, циклов и тп. Рисуются белые линии, их надо бы убрать. И ещё раз большое спасибо.:) |
Ответ: Анимация "салют"
Спасибо за замечания. Как раз занимаюсь кодом, добавил параметр "кол-во" и сделал чтобы скорость регулировалась не "чем меньше, тем быстрее" да и за цветом уже занялся. Сейчас сделаю чтобы можно было выбрать цвет фона. =)
|
Ответ: Анимация "салют"
Вот так-то лучше)
|
Ответ: Анимация "салют"
Ну да, лучше, намного) Сейчас тогда цветной фейерверк буду по твоему коду делать :super:
|
Ответ: Анимация "салют"
Надобы ещё, чтобы скорость зависила не от delay.
|
Ответ: Анимация "салют"
Вот он, вот он фейерверк моей мечты!!!
Вот только лучше будет вынести рэндом цвета из repeat, так как много времени уходит только на то, чтобы дать каждой переменной каждой линии цвет...считай 3*50 и rnd |
Ответ: Анимация "салют"
Вложений: 2
Вот еще вариант.
С эффектом "Блюр" сильно тормозно, можно и без него :В Вложение 17098 Вложение 17099 |
Ответ: Анимация "салют"
Сейчас займусь тем чтобы начальная скорость распространения была большая и постепенно гасла, что он не был бесконечным и не улетал за края, а так же что бы он под "силой притяжения" смещался вниз по оси y.
По идее должно получится реалистичнее чем в исходном коде, от которого мы отталкивались. PassCall, красиво реализовано) |
Ответ: Анимация "салют"
Вообще мне нужен был взрыв... :-D А "под "силой притяжения" смещался вниз по оси y" уж очень геморойно.
Кстати проблема осталась в том, что скорость зависит от длины линии. А ещё как сделать чтоб цвет линий менял прозрачность, те со временем линии исчезали? |
Ответ: Анимация "салют"
Ты игру что ли делаешь? Если, то этот код не годится, надо чтобы взрыв составляли спрайты, и тем более нужно будет учитывать физику, учитывать столкновения и т.д.)) Ну а если тебе просто украсить текст тогда этого достаточно ;) В MP если мне не изменяет память нет инструментов для работы с прозрачностью, нужно раскуривать библиотеки.
|
Ответ: Анимация "салют"
Год назад PassCall предлагал устроить конкурс по мидлет паскалю - http://forum.boolean.name/showthread.php?t=14612 . Тогда, правда, ничего не получилось. А тут сейчас, я вижу, уже 3 участника точно есть (я четвертым буду). Мб оформим это все-таки именно как конкурс?
|
Ответ: Анимация "салют"
Мне нужно для игры. Да всё нормально, у меня кубик, когда врезается должен взрываться)
|
Ответ: Анимация "салют"
Цитата:
|
Ответ: Анимация "салют"
Цитата:
|
Ответ: Анимация "салют"
Цитата:
|
Ответ: Анимация "салют"
Так как для прозрачности нужно курить либы сделал так
жаль что setclip есть только квадратный:mad: |
Ответ: Анимация "салют"
не совсем понял, зачем там клиппинг. Ну а если горишь желанием получить "неквадратный" клиппинг - юзай маску прозрачности. Это, конечно, не совсем клиппинг, но, потанцевав с бубном, с помощью маски можно делать удивительные вещи.
|
Ответ: Анимация "салют"
Чтобы фейерверк этот самый не был бесконечным. Сейчас покопаюсь в либах, может что придумаю.
|
Ответ: Анимация "салют"
Цитата:
|
Ответ: Анимация "салют"
Ято бы не был бесконечным? Как это? То есть, что бы не улетал за пределы экрана? Или чтобы "угасал"?
|
Ответ: Анимация "салют"
Вообще хотелось бы чтобы когда один из отрезков долетит до краев окружности(центр которой - "начало" фейерверка) он бы начал резко набирать прозрачность, таким образом поидее был бы эффект исчезновения, но к сожаления такого стандартного инструментария с прозрачностью нету.
|
Ответ: Анимация "салют"
Господа, используйте массив записей, а не кучу разных.
|
Ответ: Анимация "салют"
Разве что налаживать поферх экрана картинку, у которой в центре дырка, и края сглаженные. Опять же - маска прозрачности :В Можно соорудить программным путем
|
Ответ: Анимация "салют"
Мне кто-нибудь поможет вот с этим Это =)
|
Ответ: Анимация "салют"
От нечего делать решил поработать над этим кодом. Оптимизировал, убрал циклический rnd цвета, так как жрет много процессорного времени и нам этого не нужно, все массивы собрал в один ,благодаря чему, дальнейшая работа с кодом просто невозможна, добавил таймер.
=) |
Ответ: Анимация "салют"
|
Ответ: Анимация "салют"
Украсить текст сойдет)
Думаю с этого кода хватит, столько времени ему уделили... |
Ответ: Анимация "салют"
Цитата:
|
Часовой пояс GMT +4, время: 02:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot