В гафическом исполнении
uses graphABC;
var x,y,y0,ys,i,s: integer;
k,q:real;
begin
setwindowsize(700,500);
s:=20;
setpencolor(clnavy);
arc(200,410,200,-8,61); //это резервуары - арки
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
setpencolor(clblack);
rectangle(170,50,430,30); //это основания часов
rectangle(170,450,430,430);
floodfill(250,110,clSkyBlue); // заливка стекла
floodfill(250,410,clSkyBlue);
k:=80; x:=300; q:=0; //к - расстояние от х, q - коэффициент увеличения по х
for y:=130 to 230 do //начинаем цикл для рисования полосочек (которыми нарисован песок)
begin //это верхняя часть песка
setpencolor(clNavy);
line(round(x-k),y,round(x+k),y); //рисуем линию песка с учетом расстояния от центра и коэффициента прироста
k:=k-q; if y mod 25=0 then q:=q+0.45; //в каждом цикле k уменьшается на q, а каждые 25 шагов по у q увеличивается на 0,45
arc(200,410,200,-8,61); //это резервуары - арки
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
setpencolor(clblack);
rectangle(170,50,430,30); //это основания часов
rectangle(170,450,430,430);
end;
k:=80; x:=300; q:=0; y0:=430;
for y:=130 to 230 do //это нижняя часть песка и закрашивание верхней части голубым (как бы стирается песок)
begin
arc(200,410,200,-8,61); //это резервуары - арки
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
setpencolor(clblack);
rectangle(170,50,430,30); //это основания часов
rectangle(170,450,430,430);
setpencolor(clSkyBlue);
line(round(x-k),y,round(x+k),y); //с линиями - что и прежде
k:=k-q; if y mod 25=0 then q:=q+0.45;
setpencolor(clNavy);
line((x-100),430,x,y0); //здесь постепенно одна сторона линии поднимается по у, получается горка
line(x,y0,(x+100),430);
sleep(10*s); //пауза
y0:=y0-1;
for i:=1 to 20 do //полоса песка , 20 песчинок единовременно
begin
ys:=random(151)+250; //случайная позиция (для синего)
putpixel(300,ys,clnavy);
end;
for i:=1 to 20 do
begin
ys:=random(101)+230;
putpixel(300,ys,clSkyBlue); //случайная позиция (для голубого)
end;
end;
setpencolor(clSkyBlue); //затираем струйку песка
line(300,250,300,330);
setpencolor(clnavy);
arc(200,410,200,-8,61); //это резервуары заново
arc(400,410,200,119,-170);
arc(200,70,200,-60,7);
arc(400,70,200,173,-120);
setbrushcolor(clSilver);
rectangle(170,50,430,30);
rectangle(170,450,430,430);
end.
"Песочные часы" - заполнить двумерный массив "0" и "1" в форме песочных часов
Program z1;
Uses Crt;
Var i,m,j: integer;
a: array[1..20,1..20] of integer;
Begin
ClrScr;
for j:= 1 to 10 do
begin
for i:= 1 to 20 do
begin
textcolor (4);
a[j,i]:=1;
if (i<j) or (i+j>21) then begin a[j,i]:=0; textcolor (1); end;
write (' ', a[j,i]);
delay(5);
end;
WriteLn;
end;
for j:= 11 to 20 do
begin
for i:= 1 to 20 do
begin
textcolor (4);
a[j,i]:=1;
if (i>j) or (i+j<21) then begin a[j,i]:=0; textcolor (1); end;
write (' ', a[j,i]);
delay(5);
end;
WriteLn;
end;
end.