Изобразите полет камня, брошенного из окна дома - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Изобразите полет камня, брошенного из окна дома. Камень бросили горизонтально с высоты 100-метровой(пиксельной) башни со скоростью v=20м/с. Расстояние от него до башни по горизонтали – S, выражается формулой: S=v*t, где t – Время полета камня в секунду. Высота над землей h выражается формулой H =100-9.81* t * t/2 Нарисуйте дом(слева), землю, камень (маленькая полностью закрашеная окружность.) Затем камень летит, оставляя за собой след в виде точек.

Решение задачи: «Изобразите полет камня, брошенного из окна дома»

textual
Листинг программы
uses Graph,CRT;
Label Again;
var Device,Mode,x3,x4,y3,y4,Mx,My,x5,x6,x7,y5,y6,k:Integer;
var x1,y1,x2,y2,alpha,Dx,Dy,Dz,v,t:Real;
var a,b,c,a1,b1,c1:Real;
var P_abc,P_ab1a1,P_bb1c1,P_ca1c1,SSS,S_abc,S_ab1a1,S_bb1c1,S_ca1c1:Real;
var n:String;
Begin
k:=0;
again:
Randomize;
Device:=0;
InitGraph(Device, Mode, 'c:\tp7\BGI');
DirectVideo:=false;
x1:=80;
y1:=450;
t:=0;
Dz:=0.1;  
 
x5:=150; {koopduHaTbI ropbI}
x6:=250; {koopduHaTbI ropbI}
x7:=350; {koopduHaTbI ropbI}
y5:=450; {koopduHaTbI ropbI}
y6:=300; {koopduHaTbI ropbI}
 
Mx:=(370+Random(200)); {MuweHb}
My:=430;               {MuweHb}
x3:=Mx-20;             {MuweHb}
x4:=Mx+20;             {MuweHb}
y3:=My-20;             {MuweHb}
y4:=My+20;             {MuweHb}
Rectangle(x3,y3,x4,y4); {MuweHb}
 
Line(0,450,650,450);     {HujH99 luHu9}
Line(0,20,650,20);       {BepxH99 luHu9}
Circle(20,435,15);
 
{ropa ETO npen9TcTBue}
Line(x5,y5,x6,y6);   {ropa}
Line(x6,y6,x7,y5);   {ropa}
Line(x7,y5,x5,y5);   {ropa}
 
a:=sqrt(Abs((x6-x5)*(x6-x5))+Abs((y6-y5)*(y6-y5))); {CtopoHbI}
b:=sqrt(Abs((x7-x6)*(x7-x6))+Abs((y6-y5)*(y6-y5))); {CtopoHbI}
c:=sqrt(Abs((x7-x5)*(x7-x5))+Abs((y5-y5)*(y5-y5))); {CtopoHbI}
P_abc:=(a+b+c)/2;                   {nepumetp ropbI}
S_abc:=sqrt(P_abc*(P_abc-a)*(P_abc-b)*(P_abc-c)); {nlowaDb ropbI}
 
{yrloBa9 LuHu9}
Line(20,450,Round(x1),Round(y1));
WriteLn('BBegute yrol oT 0 go 90'); {BBodum yrol}
ReadLn(alpha);
Dx:=cos(alpha*(pi/180));
Dy:=sin(alpha*(pi/180));
x2:=(20+(x1-20)*Dx)+(450-y1)*Dy;
y2:=(450-(x1-20)*Dy)+(y1-450)*Dx;
Line(20,450,Round(x2),Round(y2)); {Pucyetc9 LuHu9}
 
Writeln('BBedute ckopoctb noleTa 9dPa');
Readln(v);
repeat
SetColor(Red);
Circle(Round(x2),Round(y2),10);
Delay(40000);
SetColor(Black);
Circle(Round(x2),Round(y2),10);
t:=t+Dz;
v:=Abs(v-v/20);
x2:=x2+(v*t*Dx);
y2:=y2-(v*t*Dy-9.81*t*t/2);
 
{MaleHbkue CtopoHbI}
a1:=sqrt(Abs((x2-x5)*(x2-x5))+Abs((y2-y5)*(y2-y5)));
b1:=sqrt(Abs((x2-x6)*(x2-x6))+Abs((y2-y6)*(y2-y6)));
c1:=sqrt(Abs((x2-x7)*(x2-x7))+Abs((y2-y5)*(y2-y5)));
 
{MaleHbkue nepuMeTpbI}
P_ab1a1:=(a1+b1+a)/2;
P_bb1c1:=(b+b1+c1)/2;
P_ca1c1:=(c+a1+c1)/2;
 
{MaleHbkue nlowadu}
S_ab1a1:=sqrt(P_ab1a1*(P_ab1a1-a)*(P_ab1a1-b)*(P_ab1a1-c));
S_bb1c1:=sqrt(P_bb1c1*(P_bb1c1-a)*(P_bb1c1-b)*(P_bb1c1-c));
S_ca1c1:=sqrt(P_ca1c1*(P_ca1c1-a)*(P_ca1c1-b)*(P_ca1c1-c));
SSS:=S_ab1a1+S_bb1c1+S_ca1c1;
if (SSS<=S_abc) or (y2>=440) then begin
k:=k+1;
Writeln('BbICTpel Homep', k);
WriteLn('ewe pa3?(Y/N)');
Readln(n);
if n='y' then goto again
else break;
end;
if (x2>=x3) and (x2<=x4) and (y2>=y3) and (y2<=y4) or (y2<=25) then begin
k:=k+1;
Writeln('BbI nonalu BbICTpelom Homep', k);
WriteLn('ewe pa3?(Y/N)');
Readln(n);
if n='y' then goto again
else break;
end;
until y2>=440;
readLn;
CloseGraph
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы