Вот такое задание: Даны два шарика диаметром М. Промоделировать движение шариков по всей плоскости экрана. Шарики могут двигаться по прямым линиям. Изменение угла движения после столкновения с границей экрана или друг с другом может быть случайной величиной. Шарик не может вылететь за пределы квадрата. Пользователь может варьировать скорости движения шариков с помощью стрелок управления курсором.
Хотелось бы разобраться в коде программы... ( дело в том, что код не мой) Объясните пожалуйста назначение каждой из процедур в тексте приведённой ниже программы!
procedure Change(g1,g2:integer;var n:integer;a:real); begin if g1>=g2 then begin sound(random(100)+880);randomize; n:=-n; a:=3.14*(random(90))/180;end; end;
как я поняла, эта процедура используется для произвольного изменения угла отклонения при столкновении объёктов. ( обязательно исправляйте меня, если я где-то не точна или, тем более, не права!!!)
теперь вопросы: для чего используются g1,g2 ? для чего нужна такая операция n:=-n?
a:=3.14*(random(90))/180;
Это ведь вычисление радианной меры угла?
Дальше....
procedure Change2(x,x1:integer;var n,m,n1,m1:integer); begin if x>=x1 then begin n:=abs(n);m:=-abs(m1);n1:=-abs(n1);m1:=abs(m);end; end;
мне вообще не понятно, для чего эта процедура... за что отвечают передаваемые в процедуру параметры? каково назначение здесь операций
n:=abs(n); {...} n1:=-abs(n1);
Следующее...
procedure Exit(x,y,r:integer;var flag:boolean); begin if (x-r<50) or (x+r>570) or (y-r<50) or (y+r>450) then begin flag:=true; SetColor(red); OutTextXY(170,190,'Sorry, fatal programm error! Press any key'); ReadKey end; end;
Ясно, что процедура для выхода из программы в случае ошибки. Но не ясно, что означает это длинное условие выхода
if (x-r<50) or (x+r>570) or (y-r<50) or (y+r>450) then