program turist_tanavatel; uses graph, crt; label tagasi; type punkt=record x:integer; y:integer; end; procedure joonista_maja(x, y:integer); var i:integer; begin rectangle(400+round(x), 450-round(y), 400+round((x+80)), 400-round(y)); end; procedure joonista_kohvik(x, y, r:integer); begin outtextxy(x+10, y-20,'CAFE'); circle(x, y, r); end; var d, m, kaugus:integer; turistikoht,ekraanikoht,eelkoht:pointtype; muutub,a,b,i :byte; j :string; begin d:=detect; initgraph(d, m, ''); joonista_maja(100, 50); joonista_maja(100, 130); joonista_maja(100, 210); joonista_maja(100, 290); joonista_maja(-150, 50); joonista_maja(-150, 130); joonista_maja(-150, 210); joonista_maja(-150, 290); joonista_maja(-360, 50); joonista_maja(-360, 130); joonista_maja(-360, 210); joonista_maja(-360, 290); joonista_kohvik(415, 250,50); outtextxy(100,20,'Rajooni sisenevad 15 turisti.'); outtextxy(100,40,'Jalgime uhekaupa nende liikumist.'); outtextXY(40,60,'Kohvikusse on joudnud: '); outtextXY(40,450,'Rajoonist laksid valja: '); randomize; for i:=1 to 15 do begin SetColor(i); SetLineStyle(0,0,3); outtextxy(10,420,'O'); turistikoht.x:=1;turistikoht.y:=1; eelkoht.x:=0;eelkoht.y:=0; repeat tagasi: a:=turistikoht.x;b:=turistikoht.y; muutub:=random(4); case muutub of 0 : Inc(a); 1 : Dec(a); 2 : Inc(b); 3 : Dec(b); end; if (a<1) or (a>4) or (b<1) or (b>5) or ((a=eelkoht.x) and (b=eelkoht.y)) then goto tagasi; eelkoht.x:=turistikoht.x; eelkoht.y:=turistikoht.y; turistikoht.x:=a; turistikoht.y:=b; case turistikoht.x of 1 : ekraanikoht.x:=10; 2 : ekraanikoht.x:=170; 3 : ekraanikoht.x:=400; 4 : ekraanikoht.x:=600; end; case turistikoht.y of 1 : ekraanikoht.y:=420; 2 : ekraanikoht.y:=330; 3 : ekraanikoht.y:=250; 4 : ekraanikoht.y:=170; 5 : ekraanikoht.y:=90; end; lineto(ekraanikoht.x+i-7,ekraanikoht.y+i-7); delay(500); until ((turistikoht.x=3) and (turistikoht.y=3)) or ((turistikoht.x=1) and (turistikoht.y=1)); Str(i,j); if ((turistikoht.x=3) and (turistikoht.y=3)) then outtextXY(220+20*i,60,j) else outtextXY(220+20*i,450,j) end; readln; closegraph; end.