Nö, das hast Du eben nicht gemacht. Setz doch übrigens bitte künftig Delphi-Tags, das ist die Schaltfläche mit dem Helm im Beitragseditor, dann wird das auch schön formatiert. Ich mach das hier mal, dann sieht das so aus:
Delphi-Quellcode:
begin
Shape1.Left:= Shape1.Left+VersatzX;
Shape1.Top:= Shape1.Top+VersatzY;
if (0 >= self.Shape1.Left) or
(self.Shape1.Left >= self.Width - self.Shape1.width) then
VersatzX := -VersatzX
end;
(* Das hier steht nun frei im Raum, damit kann der Compiler nichts anfangen *)
var
X: integer;
begin
X := VersatzX;
if X < 0 then //Ball bewegt sich nach links
begin
if Shape1.Left < -X then
X := - Shape1.Left;
end
else //Ball bewegt sich nach rechts
begin
if ClientWidth < (Shape1.Left + Shape1.Width + X) then
X := ClientWidth - (Shape1.Left + Shape1.Width);
end;
Shape1.Left:= Shape1.Left + X;
(* Hier dann noch dasselbe für die Y-Achse, die Kollisionskontrolle und ggf. das Umdrehen des Vorzeichens *)
end;
Richtig wäre gewesen:
Delphi-Quellcode:
procedure TDeinForm.DasWasDemTimerZugewiesenIst(Sender: TObject);
var
X: integer;
begin
X := VersatzX;
if X < 0 then //Ball bewegt sich nach links
begin
if Shape1.Left < -X then
X := - Shape1.Left;
end
else //Ball bewegt sich nach rechts
begin
if ClientWidth < (Shape1.Left + Shape1.Width + X) then
X := ClientWidth - (Shape1.Left + Shape1.Width);
end;
Shape1.Left:= Shape1.Left + X;
(* Hier dann noch dasselbe für die Y-Achse, die Kollisionskontrolle und ggf. das Umdrehen des Vorzeichens *)
end;