Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program uziti_objektu;
- uses graph, crt;
- const pozadi = black;
- type POLOHA = packed object
- private
- X, Y: integer;
- public
- procedure INIT(X1,Y1: integer);
- function GETX: integer;
- function GETY: integer;
- end;
- BOD = packed object (POLOHA)
- private
- VIDIT: boolean;
- public
- constructor INIT(X1,Y1: integer);
- procedure UKAZ; virtual;
- procedure SKRYJ; virtual;
- function JEVIDET: boolean;
- procedure PRESUN(X1,Y1: integer);
- procedure POSUN(N: integer); virtual;
- destructor DONE; virtual;
- end;
- KRUH = packed object (BOD)
- private
- R: integer;
- public
- constructor INIT(X1,Y1,R1: integer);
- procedure UKAZ; virtual;
- procedure SKRYJ; virtual;
- procedure ZVETSI(N: integer); virtual;
- procedure ZMENSI(N: integer); virtual;
- end;
- CTVEREC = packed object (BOD)
- private
- a: integer;
- public
- constructor INIT(X1,Y1,A1: integer);
- procedure UKAZ; virtual;
- procedure SKRYJ; virtual;
- end;
- function ZJISTI(out DX,DY: integer): boolean;
- var CO: char;
- VEN: boolean;
- begin DX:=0; DY:=0; ZJISTI:=true;
- repeat CO:=readkey;
- VEN:=true;
- case ord(CO) of 72: DY:=-1;
- 80: DY:=1;
- 75: DX:=-1;
- 77: DX:=1;
- 13: ZJISTI:=false
- else VEN:=false
- end
- until VEN
- end;
- procedure POLOHA.INIT(X1,Y1: integer);
- begin X:=X1; Y:=Y1 end;
- function POLOHA.GETX: integer;
- begin GETX:=X end;
- function POLOHA.GETY: integer;
- begin GETY:=Y end;
- constructor BOD.INIT(X1,Y1: integer);
- begin POLOHA.INIT(X1,Y1);
- VIDIT:=false
- end;
- procedure BOD.UKAZ;
- begin VIDIT:=true;
- putpixel(X,Y,getcolor)
- end;
- procedure BOD.SKRYJ;
- begin VIDIT:=false;
- putpixel(X,Y,pozadi)
- end;
- function BOD.JEVIDET: boolean;
- begin JEVIDET:=VIDIT end;
- procedure BOD.PRESUN(X1,Y1: integer);
- begin SKRYJ;
- POLOHA.INIT(X1,Y1);
- UKAZ
- end;
- procedure BOD.POSUN(N: integer);
- var DX,DY,FX,FY: integer;
- begin UKAZ;
- FX:=GETX;
- FY:=GETY;
- while ZJISTI(DX,DY) do begin FX:=FX+DX*N;
- FY:=FY+DY*N;
- PRESUN(FX,FY)
- end
- end;
- destructor BOD.DONE;
- begin SKRYJ end;
- constructor KRUH.INIT(X1,Y1,R1: integer);
- begin BOD.INIT(X1,Y1);
- R:=R1
- end;
- procedure KRUH.UKAZ;
- begin inherited UKAZ;
- graph.circle(X,Y,R)
- end;
- procedure KRUH.SKRYJ;
- var barva: word;
- begin barva:=graph.getcolor;
- graph.setcolor(pozadi);
- inherited SKRYJ;
- graph.circle(X,Y,R);
- graph.setcolor(barva)
- end;
- procedure KRUH.ZVETSI(N: integer);
- begin SKRYJ;
- R:=R+N;
- if R<0 then R:=0;
- UKAZ
- end;
- procedure KRUH.ZMENSI(N: integer);
- begin ZVETSI(-N) end;
- constructor CTVEREC.INIT(X1,Y1,A1: integer);
- begin
- BOD.INIT(X1,Y1); A:=A1;
- end;
- procedure CTVEREC.UKAZ;
- begin inherited UKAZ;
- graph.Rectangle(X,Y,X+A,Y+A);
- end;
- procedure CTVEREC.SKRYJ;
- var barva: word;
- begin barva:=graph.getcolor;
- graph.setcolor(pozadi);
- inherited SKRYJ;
- graph.RECTANGLE(X,Y,X+A,Y+A);
- graph.setcolor(barva)
- end;
- var gd, gm: smallint;
- B1:BOD;
- K1:KRUH;
- C1:CTVEREC;
- begin gd:=detect;
- initgraph(gd,gm,'');
- B1.INIT(151,82);B1.UKAZ;
- C1.INIT(500,60,80);C1.UKAZ;C1.POSUN(100);
- K1.INIT(400,100,40);K1.UKAZ;K1.POSUN(100);
- K1.ZVETSI(100);
- K1.ZMENSI(120);
- readln;
- B1.DONE;
- K1.DONE;
- C1.DONE;
- closegraph
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement