Составители:
Практикум по решению задач на ЭВМ
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
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »
