Создать объект «часы»: выводящей время в окно в формате чч:мм:сс. Окно с часами должно по желанию пользователя перемещаться по экрану, менять свои размеры и расцветку. Окно ввода должно быть частью объекта — Pascal(Паскаль)

uses Dos,Crt,Graph;
var  gd,gm,Xc,Yc,c1,c2,c3,c4,c5,c6,
     d1,d2,d3,d4,d5,d6,d7,d8:integer;
     hr,min,sec,hund:word;
{прорисовка цифр}
procedure Zero(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
end;
procedure One(xn,yn:integer);
begin
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Two(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Three(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Fouhr(xn,yn:integer);
begin
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
end;
procedure Five(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
end;
procedure Six(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,5+yn,0+xn,10+yn);
end;
procedure Seven(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,10+yn);
end;
procedure Eight(xn,yn:integer);
begin
  Rectangle(0+xn,0+yn,5+xn,10+yn);
  Line(0+xn,5+yn,5+xn,5+yn);
end;
procedure Nine(xn,yn:integer);
begin
  Line(0+xn,0+yn,5+xn,0+yn);
  Line(5+xn,0+yn,5+xn,5+yn);
  Line(5+xn,5+yn,0+xn,5+yn);
  Line(5+xn,5+yn,5+xn,10+yn);
  Line(0+xn,10+yn,5+xn,10+yn);
  Line(0+xn,0+yn,0+xn,5+yn);
end;
{выбор нужной цифры}
procedure Number(n,xn,yn:integer);
begin
  case n of
    0:Zero(xn,yn);
    1:One(xn,yn);
    2:Two(xn,yn);
    3:Three(xn,yn);
    4:Fouhr(xn,yn);
    5:Five(xn,yn);
    6:Six(xn,yn);
    7:Seven(xn,yn);
    8:Eight(xn,yn);
    9:Nine(xn,yn);
  end;
end;
{рисование каркаса}
procedure KarkasElectro;
begin
  Rectangle(Xc-40,Yc-15,Xc+36,Yc+15);
  putpixel(Xc-40+25,Yc-3,Green);
  putpixel(Xc-40+25,Yc+3,Green);
  putpixel(Xc-40+50,Yc-3,Green);
  putpixel(Xc-40+50,Yc+3,Green);
end;
{рисование нужных цифр}
procedure DrawElectro;
begin
  c1:=hr div 10;{часы}
  c2:=hr mod 10;
  c3:=min div 10;{минуты}
  c4:=min mod 10;
  c5:=sec div 10;{сукунды}
  c6:=sec mod 10;
  SetColor(Black);{черным цветом, стираем старое изображение}
  Number(c1,Xc-40+5,Yc-15+10);
  Number(c2,Xc-40+15,Yc-15+10);
  Number(c3,Xc-40+30,Yc-15+10);
  Number(c4,Xc-40+40,Yc-15+10);
  Number(c5,Xc-40+55,Yc-15+10);
  Number(c6,Xc-40+65,Yc-15+10);
  GetTime(hr,min,sec,hund);{определяем системное время}
  c1:=hr div 10;
  c2:=hr mod 10;
  c3:=min div 10;
  c4:=min mod 10;
  c5:=sec div 10;
  c6:=sec mod 10;
  SetColor(Green);{снова рисуем уже зеленым цветом}
  Number(c1,Xc-40+5,Yc-15+10);
  Number(c2,Xc-40+15,Yc-15+10);
  Number(c3,Xc-40+30,Yc-15+10);
  Number(c4,Xc-40+40,Yc-15+10);
  Number(c5,Xc-40+55,Yc-15+10);
  Number(c6,Xc-40+65,Yc-15+10);
end;
begin
gd:=0;
initgraph(gd,gm,'');
Xc:=GetMaxX div 2;{центр экрана}
Yc:=GetMaxY div 2;
GetTime(hr,min,sec,hund);{начальное системное время}
KarkasElectro; {рисуем каркас}
repeat
delay(1000);{в цикле через секунду}
DrawElectro;{меняем изображение}
until KeyPressed;{пока не нажата какая-то клавиша}
end.

Leave a Comment

34 − = 32