Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 27.06.2012, 14:46   #16
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Тебе спасибо, мне хоть нашлось чем заняться
Заодно навыки свои повысил в MP, только начал его изучать.
Правда тебе еще надо сделать фейерверк разноцветным и т.д., а в моем коде черт ногу сломит...Не завидую)
Завтра может продолжу работу над этим кодом, сделаю чтобы фейерверк был разноцветным, сделаю чтобы он гасил скорость со временем и разберусь почему он квадратный(не сильно заметно но все же, видать из-за округления...)
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 15:11   #17
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Код подогнал под себя:
Program explosions;
Var
  
dlina,i,skorost:integer;
  
x2:array[0..50of integer;
  
y2:array[0..50of integer;
  
x1:array[0..50of integer;
  
y1:array[0..50of integer;
 

procedure main;

begin

repeat
  
for i:= 0 to 50 do
    
begin
    setcolor
(255,255,255);
    
drawline(x1[i],y1[i],x2[i],y2[i]);
    
setcolor(0,0,0);
    
x1[i]:=2*x2[i]-x1[i];
    
y1[i]:=2*y2[i]-y1[i];
    
x2[i]:=2*x1[i]-x2[i];
    
y2[i]:=2*y1[i]-y2[i];
    
drawline(x1[i],y1[i],x2[i],y2[i]);
    
end;
repaint;
delay(skorost);
until (false);

end;

begin
dlina
:=20;
skorost:=50;
for 
i:= 0 to 50 do
  
begin
  x1
[i]:=getwidth/2;
  
y1[i]:=getheight/2;
  
x2[i]:=x1[i]+trunc(sin(random(360))*dlina);
  
y2[i]:=y1[i]+trunc(cos(random(360))*dlina);
  
drawline(x1[i],y1[i],x2[i],y2[i]);
  
end;

main;
end

или вот:
Program explosions;
Var
  
dlina,i,skorost:integer;
  
x2:array[0..50of integer;
  
y2:array[0..50of integer;
  
x1:array[0..50of integer;
  
y1:array[0..50of integer;

begin
dlina
:=20;
skorost:=50;
for 
i:= 0 to 50 do
  
begin
  x1
[i]:=getwidth/2;
  
y1[i]:=getheight/2;
  
x2[i]:=x1[i]+trunc(sin(random(360))*dlina);
  
y2[i]:=y1[i]+trunc(cos(random(360))*dlina);
  
drawline(x1[i],y1[i],x2[i],y2[i]);
  
end;

//***********************************
repeat
  
for i:= 0 to 50 do
    
begin
    setcolor
(255,255,255);
    
drawline(x1[i],y1[i],x2[i],y2[i]);
    
setcolor(0,0,0);
    
x1[i]:=2*x2[i]-x1[i];
    
y1[i]:=2*y2[i]-y1[i];
    
x2[i]:=2*x1[i]-x2[i];
    
y2[i]:=2*y1[i]-y2[i];
    
drawline(x1[i],y1[i],x2[i],y2[i]);
    
end;
repaint;
delay(skorost);
until (false);
//***********************************
end

AntiRock, у тебя получается много ненужных repaint, циклов и тп. Рисуются белые линии, их надо бы убрать. И ещё раз большое спасибо.
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 15:18   #18
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Спасибо за замечания. Как раз занимаюсь кодом, добавил параметр "кол-во" и сделал чтобы скорость регулировалась не "чем меньше, тем быстрее" да и за цветом уже занялся. Сейчас сделаю чтобы можно было выбрать цвет фона. =)
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 15:46   #19
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Вот так-то лучше)
Program explosions;
Var
  
dlina,i,skorost:integer;
  
si:array[0..50of integer;
  
co:array[0..50of integer;
  
x2:array[0..50of integer;
  
y2:array[0..50of integer;
  
x1:array[0..50of integer;
  
y1:array[0..50of integer;
 


begin
dlina
:=20;
skorost:=10;
for 
i:= 0 to 50 do
  
begin
  x1
[i]:=getwidth/2;
  
y1[i]:=getheight/2;
  
si[i]:=random(360);
  
co[i]:=random(360);
  
x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
  
y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
  
drawline(x1[i],y1[i],x2[i],y2[i]);
  
end;
repaint;
delay(skorost);

//***********************************
repeat
SetColor
(255255255);
FillRect(00GetWidthGetHeight);
  for 
i:= 0 to 50 do
    
begin
    x1
[i]:=x2[i];
    
y1[i]:=y2[i];
    
x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
    
y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
    
setcolor(0,0,0);
    
drawline(x1[i],y1[i],x2[i],y2[i]);
    
end;
    
repaint;
delay(skorost);
until (false);
//***********************************
end
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
AntiRock (27.06.2012)
Старый 27.06.2012, 15:51   #20
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Ну да, лучше, намного) Сейчас тогда цветной фейерверк буду по твоему коду делать
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:00   #21
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Надобы ещё, чтобы скорость зависила не от delay.
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:04   #22
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Вот он, вот он фейерверк моей мечты!!!
Program explosions;
Var
  dlina,i,skorost,koli4estvo:integer;
  si:array[1..50] of integer;
  co:array[1..50] of integer;
  x2:array[1..50] of integer;
  y2:array[1..50] of integer;
  x1:array[1..50] of integer;
  y1:array[1..50] of integer;
  r:array[1..50] of integer;
  g:array[1..50] of integer;
  b:array[1..50] of integer;
begin

dlina:=10;  ///от 3 до 20
skorost:=150;   /// от 1 до 150
koli4estvo:=20; /// от 1 до 50
//įIJнимание все параметры должны быть записаны целыми числами!

for i:= 1 to koli4estvo do
  begin
  x1[i]:=getwidth/2;
  y1[i]:=getheight/2;
  si[i]:=random(360);
  co[i]:=random(360);
  x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
  y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
  drawline(x1[i],y1[i],x2[i],y2[i]);
  end;

repaint;
delay(150/skorost);

repeat
SetColor(255, 255, 255);
FillRect(0, 0, GetWidth, GetHeight);
  for i:= 1 to koli4estvo do
    begin
    r[i]:=random(255);
    g[i]:=random(255);
    b[i]:=random(255);
    setcolor(r[i],g[i],b[i]);
    x1[i]:=x2[i];
    y1[i]:=y2[i];
    x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
    y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
    drawline(x1[i],y1[i],x2[i],y2[i]);
    end;

repaint;
delay(100/skorost);
until (false);
end.

Вот только лучше будет вынести рэндом цвета из repeat, так как много времени уходит только на то, чтобы дать каждой переменной каждой линии цвет...считай 3*50 и rnd
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (27.06.2012)
Старый 27.06.2012, 16:18   #23
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Анимация "салют"

Вот еще вариант.

С эффектом "Блюр" сильно тормозно, можно и без него :В

Нажмите на изображение для увеличения
Название: 2012.06.27_14.10.53_8.png
Просмотров: 1070
Размер:	57.2 Кб
ID:	17098
ColorBoom.rar
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:22   #24
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Сейчас займусь тем чтобы начальная скорость распространения была большая и постепенно гасла, что он не был бесконечным и не улетал за края, а так же что бы он под "силой притяжения" смещался вниз по оси y.
По идее должно получится реалистичнее чем в исходном коде, от которого мы отталкивались.

PassCall, красиво реализовано)
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:31   #25
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Вообще мне нужен был взрыв... А "под "силой притяжения" смещался вниз по оси y" уж очень геморойно.

Кстати проблема осталась в том, что скорость зависит от длины линии. А ещё как сделать чтоб цвет линий менял прозрачность, те со временем линии исчезали?
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:39   #26
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Ты игру что ли делаешь? Если, то этот код не годится, надо чтобы взрыв составляли спрайты, и тем более нужно будет учитывать физику, учитывать столкновения и т.д.)) Ну а если тебе просто украсить текст тогда этого достаточно В MP если мне не изменяет память нет инструментов для работы с прозрачностью, нужно раскуривать библиотеки.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (27.06.2012)
Старый 27.06.2012, 16:39   #27
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Анимация "салют"

Год назад PassCall предлагал устроить конкурс по мидлет паскалю - http://forum.boolean.name/showthread.php?t=14612 . Тогда, правда, ничего не получилось. А тут сейчас, я вижу, уже 3 участника точно есть (я четвертым буду). Мб оформим это все-таки именно как конкурс?
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:40   #28
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Мне нужно для игры. Да всё нормально, у меня кубик, когда врезается должен взрываться)
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:45   #29
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

Сообщение от AVL Посмотреть сообщение
Год назад PassCall предлагал устроить конкурс по мидлет паскалю - http://forum.boolean.name/showthread.php?t=14612 . Тогда, правда, ничего не получилось. А тут сейчас, я вижу, уже 3 участника точно есть (я четвертым буду). Мб оформим это все-таки именно как конкурс?
Какой из меня конкурент? =D Я только начал изучать MP, даже толком не знаю, что такое двумерный массивы и зачем они, а тут конкурс...Ну попробовать можно, у меня с математикой отлично все, да и делать нечего днем(перешел в 11-ый, каникулы). Игру для себя делаешь что ли от скуки? Кубик, да еще и таким образом взрываться будет.
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 16:45   #30
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Сообщение от Yadro Посмотреть сообщение
А ещё как сделать чтоб цвет линий менял прозрачность, те со временем линии исчезали?
А может использовать спрайты ввиде пиксельных квадратиков и уже потом менять прозрачность.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:58.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com