Soooooooooooooooooooooooo...
1. Wegen dem Abprallen in der Mitte:
Delphi-Quellcode:
oben := Decke.Top + Decke.Height;
links := shLinks.Left + ShLinks.Height; //hier ist der Fehler (Zeile 44) ---> Es muss "ShLinks.Width" heißen, es geht ja schließlich um die Horizontale
rechts := shRechts.Left;
unten := shSchlaeger.Top;
2. Du musst für die horizontalen Begrenzungen auch die Technik mit dem Betrag anwenden:
Delphi-Quellcode:
if BallOben then
y := Abs(y); //hier die erste Änderung
if BallLinks then
x := Abs(X);
if BallRechts then
x := -Abs(X);
if BallUnten AND (Ball.Left >= shSchlaeger.Left)
AND (Ball.Left <= (shSchlaeger.Left + shSchlaeger.Width)) then
y:= -Abs(y); //hier meine 2. Änderung
3. Das hast du sicher einfach noch nicht eingebaut, aber mach das mal als nächstes: Die Abbruchbedingung.
4. Für die Paddlebewegung (die
IMHO durch KeyDown schrecklich ist) würde ich dir empfehlen mal nach "
GetAsyncKeyState" zu suchen!
5. Um ein wenig Abwechslung in die Ball-FLugbahn zu bekommen, solltest du dir
random ansehen!
PS: Ich hab im Übrigen auch mal (wie so ziemlich jeder) ein Pong und ein SquashPong geschrieben, schau einfach mal auf meine Website (siehe Signatur)!
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg