Цитата
На низ и вверх работает..
А влево или вправо он сжирает шары!!!!!!!!!!!!!
само собой... Тебе нужны 2 версии функций типа check и check_2: одна - для вверх/вниз, другая - для влево/вправо... Первая у тебя уже есть, вторая - вот так:А влево или вправо он сжирает шары!!!!!!!!!!!!!
function check_3(p1, p2: pcircle; x1, x2, Y: integer): boolean;(по-моему, нигде не ошибся...)
begin
check_3 :=
((p1^.x <> X1) or (p1^.y <> y))
or
((p2^.x <> X2) or (p2^.y <> y))
end;
function check_4(p1, p2: pcircle; x1, x2, Y: integer): boolean;
begin
check_4 :=
check_3(p1, p2, X1, X2, y)
and
check_3(p1, p2, X2, X1, y);
end;
...
75:if (x<>198) and
((x<>510) or (y<>84)) and
check_4(p1, p2, centr1x, centr2x, centr1y) and
check_4(p1, p2, centr1x, centr2x, centr2y) and
check_4(p1, p2, centr1x, centr2x, centr3y) and
check_4(p1, p3, centr1x, centr2x, centr1y) and
check_4(p1, p3, centr1x, centr2x, centr2y) and
check_4(p3, p2, centr3x, centr1y, centr2y) and
check_4(p1, p3, centr1x, centr2x, centr3y) and
check_4(p3, p2, centr1x, centr2x, centr1y) and
check_4(p3, p2, centr1x, centr2x, centr2y) and
check_4(p3, p2, centr1x, centr2x, centr3y) then MoveTo(x-Step, y); {Left}
77:if (x<>510) and
((x<>354) or (y<>84)) and
check_4(p1, p2, centr1x, centr2x, centr1y) and
check_4(p1, p2, centr3x, centr2x, centr2y) and
check_4(p1, p2, centr3x, centr2x, centr3y) and
check_4(p1, p3, centr1x, centr2x, centr1y) and
check_4(p1, p3, centr3x, centr2x, centr2y) and
check_4(p1, p3, centr3x, centr2y, centr3y) and
check_4(p3, p2, centr1x, centr2x, centr1y) and
check_4(p3, p2, centr3x, centr2x, centr2y) and
check_4(p3, p2, centr3x, centr2x, centr3y) then MoveTo(x+Step, y); {Right}