1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
function distance(xdep, ydep, xbut, ybut: integer): integer;
var
d, dyplus, dymoins, dy, dx: integer;
begin
dx := abs(xbut - xdep);
dy := ybut - ydep;
if dx = 0 then
d := abs(dy)
else
begin
if (xdep mod 2 <> 0) then
begin
dymoins := -(dx div 2);
dyplus := (dx + 1) div 2;
end
else
begin
dymoins := -(dx + 1) div 2;
dyplus := dx div 2;
end;
d := dx;
if (dy > dyplus) then
d := d + dy - dyplus;
if (dy < dymoins) then
d := d + dymoins - dy;
end;
Result := d;
end; |
Partager