Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Kreise sollen von Wänden abprallen, tun sie aber nicht

  Alt 26. Aug 2012, 19:08
Mal dir das doch einfach mal auf, dann sieht man das auch besser.

Hier mal ein paar Hinweise:

Mit Top und Left ist die linke, obere Ecke beschrieben. Über die Informationen Width und Height ist es möglich auch die untere und rechte Kante zu bestimmen.

Rechte Kante = Left + Width
Untere Kante = Top + Height

Man kann sich das aber auch anders vorstellen:

Der Bereich, indem sich die linke obere Ecke sich befinden darf ist:
Code:
0 <= Kreis.Top < Form.ClientWidth - Kreis.Width
0 <= Kreis.Left < Form.ClientHeight - Kreis.Height
also
Delphi-Quellcode:
if ntop >= Self.ClientHeight - k.Height then
...
if ntop < 0 then
...
if nleft >= Self.ClientWidth - k.Width then
...
if nleft < 0 then
...
Und so?
Delphi-Quellcode:
if (ntop < 0) or (ntop + k.Height > ClientHeight) then
  k.speedy := - k.speedy;
if (nleft < 0) or (nleft + kWidth > ClientWidth) then
  k.speedx := -k.speedx;
Nicht ganz, denn jetzt passt nur die Anpassung der Richtungen, aber die neue Position muss ja auch noch errechnet werden
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat