Hallo,
Dein Problem ist sicher nicht die Multiplikation; die arbeitet - wie schon gezeigt - korrekt.
Das kannst Du auch leicht sehen, dazu musst Du nur Deinen Timercode etwas abändern:
Delphi-Quellcode:
procedure TfrmBreakout.TimerTick(Sender: TObject);
var
i, j : Integer;
Ball: TBall;
Brick: TBrick;
begin
for i := 0 to balls.Count-1 do
begin
Ball := balls[i];
for j := 0 to bricks.Count-1 do
begin
Brick := bricks[j];
Brick.Collide(Ball);
lblScore.Caption := 'y: ' + FloatToStr(Ball.YSpeed);
Application.ProcessMessages
end;
Ball.Coords.X := Ball.Coords.X+round(Ball.XSpeed);
Ball.Coords.Y := Ball.Coords.Y+round(Ball.YSpeed);
end;
end;
Dann steht da auch irgendwann eine 1 - anstatt einer -1.
Gruß