Изобразить равнобедренный треугольник, вращающийся с постоянной угловой скоростью вокруг своей высоты, расположенной параллельно вертикальной оси экрана

Поделиться:

Делфи:

code: #delphi
var
  Form1: TForm1;
  a,h,x0,y0,x,dx:integer;
  f:boolean;
implementation
 
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
a:=(PaintBox1.Width-40) div 2;
h:=PaintBox1.Height-40;
x:=a;
x0:=PaintBox1.Width div 2;
y0:=PaintBox1.Height-20;
dx:=1;
f:=true;
doublebuffered:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Timer1.Interval:=10;
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with PaintBox1.Canvas do
 begin
  brush.Color:=clWhite;
  fillrect(Cliprect);
  pen.Color:=clRed;
  moveto(x0-x,y0);
  lineto(x0,y0-h);
  lineto(x0+x,y0);
  lineto(x0-x,y0);
 end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if f then x:=x-dx
else x:=x+dx;
if(x<=0)or(x>=a)then f:=not f;
PaintBox1.Repaint;
end;

Паскаль ABC

code: #pascal
uses graphABC,crt;
var x,y,h,d:integer;
begin
hidecursor;
x:=windowwidth div 2;
y:=windowheight div 2+75;
d:=50;
h:=150;
lockdrawing;
repeat
while (d>1)and not keypressed do
 begin
  clearwindow;
  setpencolor(clRed);
  line(x-d,y,x+d,y);
  line(x-d,y,x,y-h);
  line(x,y-h,x+d,y);
  delay(100);
  d:=d-2;
  redraw;
 end;
while (d<50)and not keypressed do
 begin
  clearwindow;
  setpencolor(clRed);
  line(x-d,y,x+d,y);
  line(x-d,y,x,y-h);
  line(x,y-h,x+d,y);
  delay(100);
  d:=d+2;
  redraw;
 end;
until keypressed;
end.

Паскаль ABC.net

code: #pascal
uses graphABC;
var f:boolean;
procedure KeyPress(key:char);
begin
if key<>#0 then f:=false;
end;
var x,y,h,d:integer;
begin
x:=windowwidth div 2;
y:=windowheight div 2+75;
f:=true;
onkeypress:=KeyPress;
d:=50;
h:=150;
lockdrawing;
repeat
while (d>1)and f do
 begin
  clearwindow;
  setpencolor(clRed);
  line(x-d,y,x+d,y);
  line(x-d,y,x,y-h);
  line(x,y-h,x+d,y);
  sleep(100);
  d:=d-2;
  redraw;
 end;
while (d<50)and f do
 begin
  clearwindow;
  setpencolor(clRed);
  line(x-d,y,x+d,y);
  line(x-d,y,x,y-h);
  line(x,y-h,x+d,y);
  sleep(100);
  d:=d+2;
  redraw;
 end;
until not f;
end.

автор: Puporev

Похожие статьи: