PascalABC: анимация
Как сделать, чтобы частицы двигались....при открытии стенки разные частицы должны смешиваться....явление диффузии. Помогите пожалуйста.
Как сделать, чтобы частицы двигались....при открытии стенки разные частицы должны смешиваться....явление диффузии. Помогите пожалуйста.
Код:
program V;
uses crt,graphABC;
var
gas,gas2:array[0..19,0..1] of integer;
xh,xh2,yh:array[0..19] of integer;
i,j:integer;
begin
clrscr;
randomize;
begin
gas[i,j]:=random(50)+50;
gas2[i,j]:=random(50)+150;
gas[i,j+1]:=random(100)+50;
xh[i]:=random(3)+1;
xh2[i]:=random(3)+1;
yh[i]:=random(3)-1;
end;
for i:=0 to 19 do
begin
setbrushcolor(clyellow);
circle(gas[i,j],gas[i,j+1],1);
setbrushcolor(clred);
circle(gas2[i,j],gas[i,j+1],1);
end;
setbrushcolor(clgreen);
line(45,47,205,47);
line(205,47,205,153);
line(205,153,45,153);
line(45,153,45,47);
line(125,48,125,152);
readkey;
setbrushcolor(clblack);
line(125,48,125,152);
repeat
for i:=0 to 19 do
begin
setbrushcolor(clyellow);
circle(gas[i,j],gas[i,j+1],1);
setbrushcolor(clred);
circle(gas2[i,j],gas[i,j+1],1);
end;
delay(12000);
for i:=0 to 19 do
begin
setbrushcolor(clblack);
circle(gas[i,j],gas[i,j+1],1);
circle(gas2[i,j],gas[i,j+1],1);
if (gas[i,j]>200) or (gas[i,j]<50) then xh[i]:=xh[i]*(-1);
if (gas[i,j+1]>150) or (gas[i,j+1]<50) then yh[i]:=yh[i]*(-1);
if (gas2[i,j]>200) or (gas2[i,j]<50) then xh2[i]:=xh2[i]*(-1);
gas[i,j]:=gas[i,j]+xh[i];
gas[i,j+1]:=gas[i,j+1]+yh[i];
gas2[i,j]:=gas2[i,j]-xh2[i];
delay (600);
end;
until keypressed;
end.