TForm1 Fehler?

Für Fragen von Einsteigern und Programmieranfängern...
Soner
Beiträge: 725
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: TForm1 Fehler?

Beitrag von Soner »

Code: Alles auswählen

 
procedure TForm1.tmrMoveBallTimer(Sender: TObject); {Selbstbewegung des Balles durch Timer/
                                                     Richtungsänderung}
//...
 
  LXChange:= trunc(cos(Pi / 180 * FDirection) * FSpeed);
  LYChange:= trunc(sin(Pi / 180 * FDirection) * FSpeed);
 
 
     DrawBall(FBallX + LXChange, FBallY + LYChange);
 
     if (FBallX <= 0) or (FBallX >= ClientWidth - CBallSize) then
        FDirection:= FDirection + (90 - FDirection) * 2
     else if (FBallY <= 0) or (FBallY >= ClientHeight - CBallSize) then
        FDirection:= FDirection + (180 - FDirection) * 2;
     //   FDirection:= FDirection * -1;
end;
 
Ich glaube bei FDirection hast du Fehler. Du unterscheidest nicht zwisch x- und y-Richtung, deshalb wird beim Erreichen eines Randes die Richtung für beide Koordinaten verändert.

Ohne Beachtung des Winkels muss es etwa so aussehen:

Code: Alles auswählen

 
  BallX:= BallX + (BallGeschwindigkeit * BallXRichtung);
  BallY:= BallY + (BallGeschwindigkeit * BallYRichtung);
 
   if (BallX<0) or (BallY>RechteRand) then BallXRichtung:= BallXRichtung * -1; // durch *-1 wird immer richtung geändert
   if (BallY<0) or (BallY>UntereRand) then BallYRichtung:= BallYRichtung * -1; 
 

PascalHST
Beiträge: 29
Registriert: So 18. Mai 2014, 16:16

Re: TForm1 Fehler?

Beitrag von PascalHST »

Das ganze hatte aber eigentlich schon mal funktioniert...
Aber warum soll der Winkel nicht beachtet werden?

PascalHST
Beiträge: 29
Registriert: So 18. Mai 2014, 16:16

Re: TForm1 Fehler?

Beitrag von PascalHST »

[GELÖST]
FDirection war einfach nicht Definitiert ;)
Danke

-closed-

Antworten