Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.538 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Ballspiel(Pongähnlich)

  Alt 6. Nov 2013, 21:46
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat