Hi,
joah, so gehts:
Delphi-Quellcode:
var
dx, dy: integer;
begin
// recalculate angle (collision-detection)
if (spShape.Top >= (ClientHeight - spShape.Height)) or
(spShape.Top <= 0) then
fDeg := -fDeg;
if (spShape.Left >= (ClientWidth - spShape.Width)) or
(spShape.Left <= 0) then
fDeg := 180-fDeg;
// calculate movement
dx := round( cos(DegToRad(fDeg))*10 );
dy := round( sin(DegToRad(fDeg))*10 );
// Move shape in direction of the angle
spShape.Left := spShape.Left + dx;
spShape.Top := spShape.Top + dy;
end;
Wobei ich mal behaupte, dass diese Lösung wesentlich einfacher ist, als wenn ich mir hier jetzt ein Vektor-System überlege und programmiere.
Chris