also ich habs mir grade mal überlegt wie man das machen müsste. Nur so hingeschrieben, nicht ausprobiert.
ich gehe mal davon aus, dass du das nicht objektorientiert machen willst, also:
zuerst braucht man ne variable für die richtung, in die der Ball fliegt.
das ist dann ne gradangabe.
dann muss die timer-methode etwa so aussehen:
Delphi-Quellcode:
procedure TForm1.MoveTimer(Sender: TObject);
with ball do
begin
if (top <= 0) or (top >= hoehe) then
richtung := Abs(360 - richtung) mod 360;
if left <= 0 then
richtung := Abs(180 - richtung) mod 360;
if left >= breite then
richtung := Abs(540 - richtung) mod 360;
end;
also das ist nur das für die Spielfeldwände. dabei ist hoehe die Spielfeldhöhe und breite die Spielfeldbreite. dann musst du das ganze noch zeichnen - die winkel sind wie im einheitskreis angegeben.
sprich 0° ist gerade nach rechts, 90° gerade nach oben, 180° dementsprechend gerade nach links, 270° nach unten, und 360° wieder nach rechts.
bei unklarheiten wie ich auf die richtungsberechnungen gekommen bin frag einfach nach.
Real Programmers always confuse Christmas and Halloween because Oct31 = Dec25. - Andrew Rutherford