61 lines
1.3 KiB
Plaintext
61 lines
1.3 KiB
Plaintext
program JumpDot;
|
|
|
|
uses Crt, Graph, BGIP, DOS;
|
|
|
|
const grav=9.80665;
|
|
fac=15;
|
|
|
|
var xmax,ymax: word;
|
|
xmed,ymed: word;
|
|
dx, dy: word;
|
|
i: integer;
|
|
down: boolean;
|
|
di: word;
|
|
h,m,s,ss: word;
|
|
sts, sss: longint;
|
|
|
|
procedure Init;
|
|
var grDriver, grMode : integer;
|
|
begin
|
|
grDriver := VGA;
|
|
grMode := VGAHi;
|
|
InitGraph(grDriver,grMode,BGIPath);
|
|
xmax := GetMaxX+1; { Bildschirmbreite in Pixeln }
|
|
ymax := GetMaxY+1; { Bildschirmh”he in Pixeln }
|
|
xmed := xmax DIV 2;
|
|
ymed := ymax DIV 2;
|
|
end;
|
|
|
|
begin
|
|
Init;
|
|
dx := 0; dy := 10;
|
|
down := true;
|
|
{ GetTime(h,m,s,ss);
|
|
sts := h*60*60*100 + m*60*100 + s*100 + ss; }
|
|
di := 0;
|
|
for i:=0 to xmax do begin
|
|
{ GetTime(h,m,s,ss);
|
|
sss := (h*60*60*100 + m*60*100 + s*100 + ss)-(sts); }
|
|
dx := i;
|
|
{ dy := Round((9.80665)*Sqr(sss/100)); }
|
|
if (down) then dy := Round((grav/2)*Sqr((i-di)/fac)) else dy := Round((grav/2)*Sqr((di-(i-di))/fac));
|
|
if (dy>ymax) then begin
|
|
down:=false;
|
|
dy:=ymax-1;
|
|
di:=i-di;
|
|
end;
|
|
if (dy<=0) AND (di<i-10) then begin
|
|
down:=true;
|
|
dy:=0;
|
|
di:=i;
|
|
end;
|
|
PutPixel(dx,dy,15);
|
|
if (down) then PutPixel(0,0,10) else PutPixel(0,0,12);
|
|
Delay(10);
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
end. |