program Kresleni; uses Graph, CRT; type Lokace = object X,Y : integer; procedure Init(Xi,Yi : integer); function CtiX : integer; function CtiY : integer; end; Bod = object(Lokace) Viditelnost : boolean; Barva : byte; constructor Init(Xi,Yi : integer); procedure NastavBarvu(KodBarvy : byte); procedure Zobraz; virtual; procedure Zhasni; virtual; function Stav : boolean; procedure Posuv(Xn,Yn : integer); end; Kruh = object(Bod) R : integer; constructor Init(Xi,Yi,Ri : integer); procedure Zobraz; virtual; procedure Zhasni; virtual; procedure Zvetsi(E : integer); virtual; procedure Zmensi(C : integer); virtual; end; Oblouk = object(Kruh) Zacatek, Konec : integer; constructor Init(Xi,Yi,Ri,ZacatekI,KonecI : integer); procedure Zobraz; virtual; procedure Zhasni; virtual; end; Ctverec = object(Bod) Strana : integer; constructor Init(Xi,Yi,Stranai : integer); procedure Zobraz; virtual; procedure Zhasni; virtual; end; var GDriver : integer; GMode : integer; Error : integer; IOblouk : Oblouk; ICtverec: Ctverec; IKruh : Kruh; procedure Lokace.Init(Xi,Yi : integer); begin X := Xi; Y := Yi; end; function Lokace.CtiX : integer; begin CtiX := X; end; function Lokace.CtiY : integer; begin CtiY := Y; end; constructor Bod.Init(Xi,Yi : integer); begin Lokace.Init(Xi,Yi); Barva:=Graph.GetColor; Viditelnost := False; end; procedure Bod.NastavBarvu(KodBarvy : byte); begin Barva := KodBarvy; Graph.SetColor(KodBarvy); end; procedure Bod.Zobraz; begin Viditelnost := True; Graph.PutPixel(X,Y,Barva); end; procedure Bod.Zhasni; begin Viditelnost := False; Graph.PutPixel(X,Y,Graph.GetBkColor); end; function Bod.Stav : boolean; begin Stav := Viditelnost; end; procedure Bod.Posuv(Xn,Yn : integer); begin Zhasni; X := Xn; Y := Yn; Zobraz; end; constructor Kruh.Init(Xi,Yi,Ri : integer); begin Bod.Init(Xi,Yi); R := Ri; end; procedure Kruh.Zobraz; begin Viditelnost := True; NastavBarvu(Barva); Graph.Circle(X,Y,R); end; procedure Kruh.Zhasni; begin Graph.SetColor(Graph.GetBkColor); Viditelnost := False; Graph.Circle(X,Y,R); end; procedure Kruh.Zvetsi(E : integer); begin Zhasni; R := R + E; if R < 0 then R := 0; Zobraz; end; procedure Kruh.Zmensi(C : integer); begin Zvetsi(-C); end; constructor Oblouk.Init(Xi,Yi,Ri,ZacatekI,KonecI:integer); begin Kruh.Init(Xi,Yi,Ri); Zacatek := ZacatekI; Konec := KonecI; end; procedure Oblouk.Zobraz; begin Viditelnost := True; NastavBarvu(Barva); Graph.Arc(X,Y,Zacatek,Konec,R); end; procedure Oblouk.Zhasni; begin Graph.SetColor(Graph.GetBkColor); Viditelnost := False; Graph.Arc(X,Y,Zacatek,Konec,R); NastavBarvu(Barva); end; constructor Ctverec.Init(Xi,Yi,Stranai:integer); begin Bod.Init(Xi,Yi); Strana := Stranai; end; procedure Ctverec.Zobraz; begin Viditelnost := True; Bod.NastavBarvu(Barva); Graph.Rectangle(X,Y,X+Strana,Y+Strana); end; procedure Ctverec.Zhasni; begin Graph.SetColor(Graph.GetBkColor); Viditelnost := False; Graph.Rectangle(X,Y,X+Strana,Y+Strana); Bod.NastavBarvu(Barva); end; BEGIN GDriver := Detect; Graph.InitGraph(GDriver,GMode,''); if Graph.GraphResult <> GrOk then begin WriteLn('Graficka chyba.'); Halt; end; IKruh.Init(100,180,40); IOblouk.Init(200,80,20,20,190); ICtverec.Init(300,160,40); IKruh.Zobraz; IOblouk.Zobraz; ICtverec.Zobraz; readln; Graph.CloseGraph; END.