program Osie;
uses graph,crt;
var t,p,s,i: integer;
    c: char;

procedure init;
var ster,tryb: integer;

begin
ster:=detect;
InitGraph(ster, tryb, 'C:\bp\bgi');
end;

procedure elem_g;
begin
init;
settextstyle(2,0,4);
outtextxy(trunc(getmaxx/2)+15,5,'Y');
outtextxy(getmaxx-15,trunc(getmaxy/2)+15,'X');
outtextxy(trunc(getmaxx/2)+100,trunc(getmaxy/2)+100,'Ustawienia skali:');
outtextxy(trunc(getmaxx/2)+100,trunc(getmaxy/2)+110,'Dla osi x: 4,6');
outtextxy(trunc(getmaxx/2)+100,trunc(getmaxy/2)+130,'Dla osi y: 8,2');
setcolor(15);
line(0,trunc(getmaxy/2),getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2),0,trunc(getmaxx/2),getmaxy);
end;
procedure rys_pocz;
begin
for i:=1 to (trunc((getmaxx-20)/(2*s))) do
line(trunc(getmaxx/2)+s*i,trunc(getmaxy/2)-3,trunc(getmaxx/2)+s*i,trunc(getmaxy/2)+3);
for i:=1 downto -(trunc((getmaxx-20)/(2*s))) do
line(s*i+trunc(getmaxx/2),trunc(getmaxy/2)-3,s*i+trunc(getmaxx/2),trunc(getmaxy/2)+3);
for i:=1 to (trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));
for i:=1 downto -(trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));

line(getmaxx-5,trunc(getmaxy/2)-5,getmaxx,trunc(getmaxy/2));
line(getmaxx-5,trunc(getmaxy/2)+5,getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2)-5,5,trunc(getmaxx/2),0);
line(trunc(getmaxx/2)+5,5,trunc(getmaxx/2),0);
end;
procedure rys_cz;
begin
setcolor(0);
line(0,trunc(getmaxy/2),getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2),0,trunc(getmaxx/2),getmaxy);
for i:=1 to (trunc((getmaxx-20)/(2*s))) do
line(s*i+trunc(getmaxx/2),trunc(getmaxy/2)-3,s*i+trunc(getmaxx/2),trunc(getmaxy/2)+3);
for i:=1 downto -(trunc((getmaxx-20)/(2*s))) do
line(s*i+trunc(getmaxx/2),trunc(getmaxy/2)-3,s*i+trunc(getmaxx/2),trunc(getmaxy/2)+3);
for i:=1 to (trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));
for i:=1 downto -(trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));
line(getmaxx-5,trunc(getmaxy/2)-5,getmaxx,trunc(getmaxy/2));
line(getmaxx-5,trunc(getmaxy/2)+5,getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2)-5,5,trunc(getmaxx/2),0);
line(trunc(getmaxx/2)+5,5,trunc(getmaxx/2),0);
end;
procedure rys_b;
begin
setcolor(15);
line(0,trunc(getmaxy/2),getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2),0,trunc(getmaxx/2),getmaxy);
for i:=1 to (trunc((getmaxx-20)/(2*s))) do
line(s*i+trunc(getmaxx/2),trunc(getmaxy/2)-3,s*i+trunc(getmaxx/2),trunc(getmaxy/2)+3);
for i:=1 downto -(trunc((getmaxx-20)/(2*s))) do
line(s*i+trunc(getmaxx/2),trunc(getmaxy/2)-3,s*i+trunc(getmaxx/2),trunc(getmaxy/2)+3);
for i:=1 to (trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));
for i:=1 downto -(trunc((getmaxy-15)/(2*t))) do
line(trunc(getmaxx/2)-3,t*i+trunc(getmaxy/2),trunc(getmaxx/2)+3,t*i+trunc(getmaxy/2));
line(getmaxx-5,trunc(getmaxy/2)-5,getmaxx,trunc(getmaxy/2));
line(getmaxx-5,trunc(getmaxy/2)+5,getmaxx,trunc(getmaxy/2));
line(trunc(getmaxx/2)-5,5,trunc(getmaxx/2),0);
line(trunc(getmaxx/2)+5,5,trunc(getmaxx/2),0);
end;

begin
elem_g;
s:=3;
t:=3;
rys_pocz;
repeat
c:=readkey;
rys_cz;
if c='6' then s:=s+1;
if (c='4') and (s>4) then s:=s-1;
if c='8' then t:=t+1;
if (c='2') and (t>4) then t:=t-1;
rys_b;
until c='q';
readln;
end.
