Advertisement
popelka

Object Pascal - Kruh, ctverec, bod

Mar 24th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.07 KB | None | 0 0
  1. program uziti_objektu;
  2.  
  3. uses graph, crt;
  4.  
  5. const pozadi = black;
  6.  
  7. type POLOHA = packed object
  8.                  private
  9.                     X, Y: integer;
  10.                  public
  11.                      procedure INIT(X1,Y1: integer);
  12.                      function GETX: integer;
  13.                      function GETY: integer;
  14.               end;
  15.      BOD = packed object (POLOHA)
  16.               private
  17.                   VIDIT: boolean;
  18.               public
  19.                   constructor INIT(X1,Y1: integer);
  20.                   procedure UKAZ; virtual;
  21.                   procedure SKRYJ; virtual;
  22.                   function JEVIDET: boolean;
  23.                   procedure PRESUN(X1,Y1: integer);
  24.                   procedure POSUN(N: integer); virtual;
  25.                   destructor DONE; virtual;
  26.            end;
  27.      KRUH = packed object (BOD)
  28.                private
  29.                    R: integer;
  30.                public
  31.                    constructor INIT(X1,Y1,R1: integer);
  32.                    procedure UKAZ; virtual;
  33.                    procedure SKRYJ; virtual;
  34.                    procedure ZVETSI(N: integer); virtual;
  35.                    procedure ZMENSI(N: integer); virtual;
  36.             end;
  37.      CTVEREC = packed object (BOD)
  38.          private
  39.              a: integer;
  40.          public
  41.              constructor INIT(X1,Y1,A1: integer);
  42.              procedure UKAZ; virtual;
  43.              procedure SKRYJ; virtual;
  44.      end;
  45.  
  46. function ZJISTI(out DX,DY: integer): boolean;
  47. var CO: char;
  48.     VEN: boolean;
  49. begin DX:=0; DY:=0; ZJISTI:=true;
  50.       repeat CO:=readkey;
  51.              VEN:=true;
  52.              case ord(CO) of 72: DY:=-1;
  53.                              80: DY:=1;
  54.                              75: DX:=-1;
  55.                              77: DX:=1;
  56.                              13: ZJISTI:=false
  57.                              else VEN:=false
  58.                           end
  59.       until VEN
  60. end;
  61.  
  62. procedure POLOHA.INIT(X1,Y1: integer);
  63. begin X:=X1; Y:=Y1 end;
  64.  
  65. function POLOHA.GETX: integer;
  66. begin GETX:=X end;
  67.  
  68. function POLOHA.GETY: integer;
  69. begin GETY:=Y end;
  70.  
  71. constructor BOD.INIT(X1,Y1: integer);
  72. begin POLOHA.INIT(X1,Y1);
  73.       VIDIT:=false
  74. end;
  75.  
  76. procedure BOD.UKAZ;
  77. begin VIDIT:=true;
  78.       putpixel(X,Y,getcolor)
  79. end;
  80.  
  81. procedure BOD.SKRYJ;
  82. begin VIDIT:=false;
  83.       putpixel(X,Y,pozadi)
  84. end;
  85.  
  86. function BOD.JEVIDET: boolean;
  87. begin JEVIDET:=VIDIT end;
  88.  
  89. procedure BOD.PRESUN(X1,Y1: integer);
  90. begin SKRYJ;
  91.       POLOHA.INIT(X1,Y1);
  92.       UKAZ
  93. end;
  94.  
  95. procedure BOD.POSUN(N: integer);
  96. var DX,DY,FX,FY: integer;
  97. begin UKAZ;
  98.       FX:=GETX;
  99.       FY:=GETY;
  100.       while ZJISTI(DX,DY) do begin FX:=FX+DX*N;
  101.                                    FY:=FY+DY*N;
  102.                                    PRESUN(FX,FY)
  103.                              end
  104. end;
  105.  
  106. destructor BOD.DONE;
  107. begin SKRYJ end;
  108.  
  109. constructor KRUH.INIT(X1,Y1,R1: integer);
  110. begin BOD.INIT(X1,Y1);
  111.       R:=R1
  112. end;
  113.  
  114. procedure KRUH.UKAZ;
  115. begin inherited UKAZ;
  116.       graph.circle(X,Y,R)
  117. end;
  118.  
  119. procedure KRUH.SKRYJ;
  120. var barva: word;
  121. begin barva:=graph.getcolor;
  122.       graph.setcolor(pozadi);
  123.       inherited SKRYJ;
  124.       graph.circle(X,Y,R);
  125.       graph.setcolor(barva)
  126. end;
  127.  
  128. procedure KRUH.ZVETSI(N: integer);
  129. begin SKRYJ;
  130.       R:=R+N;
  131.       if R<0 then R:=0;
  132.       UKAZ
  133. end;
  134.  
  135. procedure KRUH.ZMENSI(N: integer);
  136. begin ZVETSI(-N) end;
  137.  
  138. constructor CTVEREC.INIT(X1,Y1,A1: integer);
  139. begin
  140.       BOD.INIT(X1,Y1); A:=A1;
  141. end;
  142.  
  143. procedure CTVEREC.UKAZ;
  144. begin inherited UKAZ;
  145.       graph.Rectangle(X,Y,X+A,Y+A);
  146. end;
  147.  
  148. procedure CTVEREC.SKRYJ;
  149. var barva: word;
  150. begin barva:=graph.getcolor;
  151.       graph.setcolor(pozadi);
  152.       inherited SKRYJ;
  153.       graph.RECTANGLE(X,Y,X+A,Y+A);
  154.       graph.setcolor(barva)
  155. end;
  156.  
  157. var gd, gm: smallint;
  158.     B1:BOD;
  159.     K1:KRUH;
  160.     C1:CTVEREC;
  161.  
  162. begin gd:=detect;
  163.       initgraph(gd,gm,'');
  164.       B1.INIT(151,82);B1.UKAZ;
  165.       C1.INIT(500,60,80);C1.UKAZ;C1.POSUN(100);
  166.       K1.INIT(400,100,40);K1.UKAZ;K1.POSUN(100);
  167.       K1.ZVETSI(100);
  168.       K1.ZMENSI(120);
  169.       readln;
  170.       B1.DONE;
  171.       K1.DONE;
  172.       C1.DONE;
  173.       closegraph
  174. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement