uses graph,crt; type ar=array [1..10] of integer; ar1=array[1..10] of boolean; var cs,ts,rs,m,gd,gm,i:integer; mc,mr,mt,f:ar; k:char; ce,te,re:ar1; procedure drawf(fg,sh:integer;mas:ar;var en:ar1); begin for i:=1 to sh do begin if (mas[i]>0) and (en[i]) then begin setcolor(red); en[i]:=false; case fg of 0:begin line (mas[i],80,mas[i]+20,80); line (mas[i]+20,80,mas[i]+10,120); line (mas[i]+10,120,mas[i],80); end; 1: rectangle (mas[i],80,mas[i]+20,120); 2: circle(mas[i],100,20); end; delay(300); end else if (mas[i]>0) and (not en[i]) then begin setcolor(white); case fg of 0:begin line (mas[i],80,mas[i]+20,80); line (mas[i]+20,80,mas[i]+10,120); line (mas[i]+10,120,mas[i],80); end; 1: rectangle (mas[i],80,mas[i]+20,120); 2: circle(mas[i],100,20); end; en[i]:=true; delay(300); end; end; end; begin gd:=detect; gm:=1; initgraph (gd,gm,''); randomize; for i:=1 to 10 do f[i]:=random(3); m:=1; i:=30; outtextxy(10,20,'R-Rectangle,T-Triangle,C-Circle'); while m<=10 do begin case f[m] of 0:begin circle (i,100,20); cs:=cs+1; mc[cs]:=i; end; 1:begin rectangle (i,80,i+20,120); rs:=rs+1; mr[rs]:=i; end; 2:begin line (i,80,i+20,80); line (i+20,80,i+10,120); line (i+10,120,i,80); ts:=ts+1; mt[ts]:=i; end; end; m:=m+1; i:=i+60; end; while k<>#27 do begin while keypressed do k:=readkey; case k of 't','T':drawf(0,ts,mt,te); 'r','R':drawf(1,rs,mr,re); 'c','C':drawf(2,cs,mc,ce); end; end; repeat until keypressed; closegraph; end.