hallo ChrisE,
ich habe ein wenig herumprobiert. deine methode ändert nichts an den problemen, sie verkürzen nur das zeitinterval, welches aber nichts an den y-abständen ändert (durch beschleunigung wohl nicht möglich).
ich bin weiterhin am verzweiffeln, wie genau er das (vor allem letzte X) ausrechnet. die koordinaten stimmen einfach irgendwie nicht - trotz verwendung der richtigen formeln.
sieht man deutlich an diesem bild:
http://www.pro-lamer.net/d32_wl2.png
Delphi-Quellcode:
procedure Tfrm.Button1Click(Sender: TObject);
begin
// Eingabe
a:=9.81/2;
h:=strtoint(edt_in_h.text);
v:=strtofloat(edt_in_v.text);
e:=strtoint(edt_in_e.text);
if (h<300) and (h>-1) and (e<281) and (e>19) and (v>0) then
begin
i:=0;
x:=15;
y:=frm.img.height-h;
buildimg(e);
circle(x,y);
frm.tmr.enabled:=true;
end
else
edt_out_w.text:='Eingaben falsch!';
end;
procedure Tfrm.tmrTimer(Sender: TObject);
begin
if (y<frm.img.height) then
begin
inc(i);
t:=i*frm.tmr.interval/50;
y:=y+(a*t);
x:=15+(v*t);
circle(x,y);
end
else
begin
w:=round(x);
if (w>e) and (w<e+20) then
begin
edt_out_w.text:=inttostr(w)+' Treffer!';
frm.tmr.enabled:=false;
end
else
begin
edt_out_w.text:=inttostr(w)+' Daneben!';
frm.tmr.enabled:=false;
end;
end;
end;
rest wie oben