var Form1: TForm1; a:integer; n1,n2,r,xc,k:integer; var i:integer;
implementation
{$R *.dfm} procedure stakan(x,y:integer); var d:integer; begin d:=10; with Form1.Canvas do begin Pen.Mode:=pmNotXor; pen.Color:=clBlack; pen.Width:=2; brush.Color:=clSkyBlue; Ellipse(x-3*d,y,x+3*d,y+2*d); MoveTo(x-3*d,y+d); LineTo(x-5*d,y+d+9*d); MoveTo(x+3*d,y+d); LineTo(x+5*d,y+d+9*d); Arc(x-5*d,y+8*d,x+5*d,y+12*d,x-5*d,y+10*d,x+5*d,y+10*d); end; end;
procedure dvizh; begin n1:=random(3)+1; n2:=n1; while n2=n1 do n2:=random(3)+1; xc:=x0+round((n1+n2-2)*rast/2); r:=abs(round((n1-n2)*rast/2)); a:=0; form1.Button1.Enabled:=false; form1.Timer1.enabled:=true; end;
procedure TForm1.FormPaint(Sender: TObject); begin stakan(x0,y0); stakan(x0+rast,y0); stakan(x0+2*rast,y0); end;
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin stakan(xc+round(r*cos(a/180*pi)),y0+round(r*sin(a/180*pi))); stakan(xc-round(r*cos(a/180*pi)),y0-round(r*sin(a/180*pi))); inc(a,5); stakan(xc+round(r*cos(a/180*pi)),y0+round(r*sin(a/180*pi))); stakan(xc-round(r*cos(a/180*pi)),y0-round(r*sin(a/180*pi))); if a>=180 then begin timer1.Enabled:=false; button1.Enabled:=true; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin // вот этот цикл не работает for i:=1 to 10 do begin dvizh; label1.Caption:=inttostr(i); end; end;
end.
посмотрите что не так, уже все проверил...
Добавлено через 2 мин. да, забыл. на форму надо поставить таймер - неактивный с задержкой 1, кнопку, и для проверки цикла - лабел.