Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2009, 16:20   #1
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
Сообщение Эффект идущего дыма.

я нарисовала домик.....но как сделать анимацию на дымок, выходящий из трубы, чтобы был эффект дыма??????? помогите!!!!!!!!



program domik;
uses graph,crt;
var t,r,x,y,i:integer;
st:string;
begin
t:=detect;
initgraph(t,r,'C:\TP7\bgi');
setlinestyle(0,0,1);
setcolor(14);
rectangle(90,150,420,400);
line(90,150,250,50);
line(250,50,420,150);
rectangle(100,200,170,300);
rectangle(200,200,270,300);
setfillstyle(10,1);
floodfill(101,201,14);
setfillstyle(10,1);
floodfill(201,201,14);
setlinestyle(0,0,3);
line(100,250,170,250);
line(135,250,135,300);
line(200,250,270,250);
line(235,250,235,300);
setlinestyle(0,0,1);
rectangle(300,240,380,380);
ellipse(340,240,0,180,40,30);
setfillstyle(1,6);
floodfill(301,241,14);
setfillstyle(1,2);
floodfill(350,239,14);
setfillstyle(2,6);
floodfill(71,151,14);
circle(250,100,10);
setfillstyle(1,3);
floodfill(75,149,14);
setfillstyle(1,2);
floodfill(235,100,14);
line(332,100,332,50);
line(332,50,365,50);
line(365,50,365,120);
setfillstyle(1,5);
floodfill(320,100,14);
setcolor(3);
setcolor(8);
i:=50; while i<>0 do begin circle(350,i,8);
i:=i-10;
end;
readln;
closegraph;
end.
aiktz вне форума Ответить с цитированием
Старый 14.09.2009, 16:42   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Как вариант, дальше всё зависит от вашей фантазии
Код:
program domik;
uses graph,crt;
var t,r,x,y,i,starti :integer;
st:string;
begin
t:=detect;
initgraph(t,r,'C:\TP7\bgi');
setlinestyle(0,0,1);
setcolor(14);
rectangle(90,150,420,400);
line(90,150,250,50);
line(250,50,420,150);
rectangle(100,200,170,300);
rectangle(200,200,270,300);
setfillstyle(10,1);
floodfill(101,201,14);
setfillstyle(10,1);
floodfill(201,201,14);
setlinestyle(0,0,3);
line(100,250,170,250);
line(135,250,135,300);
line(200,250,270,250);
line(235,250,235,300);
setlinestyle(0,0,1);
rectangle(300,240,380,380);
ellipse(340,240,0,180,40,30);
setfillstyle(1,6);
floodfill(301,241,14);
setfillstyle(1,2);
floodfill(350,239,14);
setfillstyle(2,6);
floodfill(71,151,14);
circle(250,100,10);
setfillstyle(1,3);
floodfill(75,149,14);
setfillstyle(1,2);
floodfill(235,100,14);
line(332,100,332,50);
line(332,50,365,50);
line(365,50,365,120);
setfillstyle(1,5);
floodfill(320,100,14);
setcolor(3);
starti := 50; {с какой позиции начинать}
repeat
  if starti = 0 then starti := 50;
  setcolor(8);
  i := starti;
  while i <> 0 do begin circle(350, i, 8); i := i - 10; end;
  delay(1000); {задержка}
  setcolor(3); {стираем}
  i := starti;
  while i <> 0 do begin circle(350, i, 8); i := i - 10; end;
  delay(1000); {задержка}
  starti := starti - 10;
until keypressed;
{
i:=50; while i<>0 do begin circle(350,i,8);
i:=i-10;
end;
}
closegraph;
end.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.09.2009, 16:50   #3
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
По умолчанию

можна сделать так:
замените этот кусок кода
Код:
i:=50; while i<>0 do begin circle(350,i,8);
i:=i-10;
end;
readln;
closegraph;
end.
на вот этот
Код:
randomize;
repeat
  y:=random(50);
  x:=random(10+(50-(y div 2)))+344-(50-(y div 2))div 2;
  i:=random(15);
  if i=0 then i:=15 else i:=3;
  putpixel(x,y,i);
  delay(50);
until keypressed;
closegraph;
end.

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 14.09.2009, 16:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то типа:
Код:
uses crt,Graph;
const er=100;
var
 c:char;
  grDriver: Integer;
  grMode: Integer;
  a,b,ErrCode,i: integer;
  ang:real;

begin
  grDriver := Detect;
  InitGraph(grDriver, grMode,'');{}
  ErrCode := GraphResult;
  a:=200;b:=500;
  moveto(a,b);
  i:=1;
  repeat
    a:=a-i;
    lineto(a,b);
    dec(i);
    if (i=-5)or(i=5) then i:=-i;
    dec(b,2);
  until b<100;
  c:=readkey;
  CloseGraph;
end.
Кстати тут бы тригонометрическими функциями наилучше было бы вычислять
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2009, 17:20   #5
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
По умолчанию

огромное вам человеческое спасибо!!!!!!!!
aiktz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эффект бегущей единицы OLV_Nikon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.11.2008 09:10
Эффект пулемета Titan123 Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 13.10.2008 13:46
Эффект нажатия SeregaIRK Общие вопросы Delphi 2 17.09.2008 17:47
Эффект полупрозрачности краев TimeShift Помощь студентам 3 25.11.2007 03:10