ELKA.PAS 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. Uses Graph,Crt;
  2. Type
  3. PolyPoints = record
  4. x,y : Integer;
  5. End;
  6. UserRec = array[1..4] of PointType;
  7. Var
  8. mas : UserRec;
  9. k,j,l,o,d,r : integer;
  10. Procedure RecTreug(Koor : UserRec;color : word);FAR;
  11. Const
  12. n=4;
  13. Var
  14. i : integer;
  15. Begin
  16. SetFillStyle(10,10); { \ Прорисо}
  17. SetColor(color); { | вка пер}
  18. { | вого }
  19. DrawPoly(n,koor); { | }
  20. FloodFill(koor[1].x,koor[1].y+10,10); { / тругольника}
  21. SetColor(13);
  22. Circle(koor[2].x,koor[2].y,abs((k-l))div 20);
  23. SetFillStyle(1,13); { Рисование Левого кружка}
  24. FloodFill(koor[2].x-1,koor[2].y,13);
  25. SetColor(12);
  26. Circle(Koor[3].x,Koor[3].y,(abs(k-l))div 20);
  27. SetFillStyle(1,12); { Рисование Правого кружка}
  28. FloodFill(koor[3].x-1,koor[3].y,12);
  29. For i:=1 to 2 do
  30. Begin
  31. SetColor(10);
  32. SetFillStyle(10,10);
  33. koor[1].y:=koor[2].y;
  34. koor[2].y:=koor[2].y+mas[2].y-j; {Вычисление вершин следуюшего }
  35. koor[3].y:=koor[2].y; { треугольника}
  36. koor[4].y:=koor[1].y;
  37. DrawPoly(n,koor); { Его прорисовка и закрашивание}
  38. FloodFill(koor[1].x,koor[1].y+10,10);
  39. SetColor(13);
  40. Circle(koor[2].x,koor[2].y,abs((k-l))div 20);
  41. SetFillStyle(1,13);
  42. FloodFill(koor[2].x-1,koor[2].y,13);
  43. SetColor(12); {Кружки Однако}
  44. Circle(Koor[3].x,Koor[3].y,(abs(k-l))div 20);
  45. SetFillStyle(1,12);
  46. FloodFill(koor[3].x-1,koor[3].y,12);
  47. End;
  48. SetColor(6);
  49. Rectangle(mas[1].x-((l-k)div 8),koor[3].y+1,mas[1].x+((l-k)div 8),koor[3].y+((mas[3].y-mas[1].y)div 5));
  50. SetFillStyle(11,6); { Прорисока нижнего коричневого}
  51. FloodFill(mas[1].x,koor[3].y+4,6); { прямоугольника }
  52. End;
  53. Procedure RectElka(x,y,xx,yy : Integer);
  54. Begin
  55. mas[1].x:=((x+xx)div 2);
  56. mas[4].x:=mas[1].x;
  57. mas[2].x:=x;mas[3].x:=xx; { Вычисления вершин тр-ка видимо}
  58. mas[1].y:=y;mas[2].y:=((yy+y)div 4);mas[3].y:=mas[2].y;
  59. mas[4].y:=mas[1].y;
  60. RecTreug(mas,10);
  61. End;
  62. Begin
  63. Readln(k,j,l,o);
  64. r:=2;
  65. d:=detect;
  66. InitGraph(d,r,'');
  67. If GraphReSult=GrOK then rectelka(k,j,l,o);
  68. Readkey;
  69. CloseGraph;
  70. End.