Практикум по решению задач на ЭВМ. Тарова И.Н - 19 стр.

UptoLike

Практикум по решению задач на ЭВМ
cleardevice;
снова нарисовать фрагмент в другом месте экрана.
Такой способ осуществлен в программе billiard, где два шарика радиу-
сом 5 пикселей разных цветов двигаются с одинаковой скоростью внутри
зеленого, прямоугольника, построенного с помощью процедуры bar.
Процедура blou измеряет смещение центра шарика от сторон прямо-
угольника по каждой оси и, если это смещение на следующем шаге цик-
ла станет меньше радиуса, изменяет направление движения, моделируя
поведение упругого шара при ударе о стенку. .
В программе также рассмотрена ситуация соприкосновения шариков во
время их движения. Она решается примитивно просто: каждый шарик ме-
няет направление своего движения на противоположное.
Программа
program billiard;
uses crt,graph;
var x,y,dx,dy,gd,gm:integer; xl,yl,dxl,dyl:integer;
procedure blow(a,b:integer; var c,d:integer);
begin
if (a<107) or (a>523) then c:=-c;
if (b<107) or (b>363) then.d:=-d;
end;
begin
gd:=detect; initgraph(gd,gm,'');
setcolor(14);
setlinestyle(0,0,1);
rectangle(99,99,531,371);
setfillstyle(l,3);
bar(100,100,530,370);
x:=320; y:=240; dx:=2; dy:=2;
xl:=320; yl:=200; dxl:=-2; dyl:=-2;
repeat circle(x,y,5);
setcolor(4); circle(xl,yl,5);
blow(x,y,dx,dy);
blow(xl,yl,dxl,dyl);
delay(10);
if (abs(x-xl)<=10) and (abs(y-yl)<=10) then
begin
dx:=-dx; dy:=-dy; dxl:=-dxl; dyl:=>-dyl; delay(300);
end;
setcolor(3);
circle(x,y,5);
x:=x+dx; y:=y+dy;
setcolor(3);
19
                  Практикум по решению задач на ЭВМ


  cleardevice;
     • снова нарисовать фрагмент в другом месте экрана.
  Такой способ осуществлен в программе billiard, где два шарика радиу-
сом 5 пикселей разных цветов двигаются с одинаковой скоростью внутри
зеленого, прямоугольника, построенного с помощью процедуры bar.
Процедура blou измеряет смещение центра шарика от сторон прямо-
угольника по каждой оси и, если это смещение на следующем шаге цик-
ла станет меньше радиуса, изменяет направление движения, моделируя
поведение упругого шара при ударе о стенку. .
  В программе также рассмотрена ситуация соприкосновения шариков во
время их движения. Она решается примитивно просто: каждый шарик ме-
няет направление своего движения на противоположное.
     Программа
  program billiard;
         uses crt,graph;
         var x,y,dx,dy,gd,gm:integer; xl,yl,dxl,dyl:integer;
  procedure blow(a,b:integer; var c,d:integer);
         begin
         if (a<107) or (a>523) then c:=-c;
         if (b<107) or (b>363) then.d:=-d;
         end;
  begin
         gd:=detect; initgraph(gd,gm,'');
         setcolor(14);
         setlinestyle(0,0,1);
         rectangle(99,99,531,371);
         setfillstyle(l,3);
         bar(100,100,530,370);
         x:=320; y:=240; dx:=2; dy:=2;
         xl:=320; yl:=200; dxl:=-2; dyl:=-2;
         repeat circle(x,y,5);
         setcolor(4); circle(xl,yl,5);
         blow(x,y,dx,dy);
         blow(xl,yl,dxl,dyl);
         delay(10);
         if (abs(x-xl)<=10) and (abs(y-yl)<=10) then
         begin
              dx:=-dx; dy:=-dy; dxl:=-dxl; dyl:=>-dyl; delay(300);
         end;
         setcolor( 3 ) ;
         circle(x,y,5);
         x:=x+dx; y:=y+dy;
         setcolor(3);


                                 19