Hallo Ryazor,
Es gibt in Delphi (zumindest in 6PE) in dem Verzeichnis Demos\earthpng ein fertiges Pong, daß könntest du dir anschauen. Außerdem habe ich auf meiner HP (
www.tommie-lie.net) unter Downloads ein eigenes Pong auf oGL-Basis, also ein 3D-Pong geschrieben. Wenn du willst, schicke ich dir auch den Sourcecode.
Aber nun zu der eigentlichen Frage, falls du nicht selbst den Code lesen willst:
Ich gehe davon aus, daß du mit dem Canvas arbeitest, oder zumindest mit den echten Pixelkoordinaten auf dem Bildschirm. D.h. du bewegst den Ball, indem du die Position um 1 erhöhst. Der Ball fängt bei (0;0) (rechts oben) an und geht dann nach links unten, also ist die nächste Position (1;1), dann (2;2) usw. Wenn er jetzt an den Rand kommt, also wenn die Koordinaten größer sind als dein Fenster, wird der Ball zurückgeworfen. Am besten du arbeitest von vornherein mit einem Richtungsvektor, den du zu den Ballkoordinaten addierst.
Mit anderen Worten:
Der Richtungsvektor ist (1;1). Addiert man ihn zu den Ballkoordinaten, fliegt der Ball nach rechts unten. Trifft er auf die Wand, brauchst du nur die entsprechende Achse des Richtungsvektors umzudrehen. Trifft er also auf eine horizontale Wand, ist der Richtungsvektor (1;-1). Addiert man jetzt den Richtungsvektor mit der Ballposition, so fliegt der Ball daraufhin nach rechts-oben, anstatt nach rechts unten - er wurde also zurückgeworfen.
Bei der vertikalen Wand sieht's genauso aus:
Trifft der Ball auf eine solche, drehst du einfach die horizontale Richtung um, also der Richtungsvektor ist daraufhin (-1;-1).
Wenn du jedesmal den Richtungsvektor drehst, wenn der Ball die Wand trifft, dann wird er jedesmal zurückgeworfen.
Wie man mit den Delphi-Grundmitteln so einen Vektor erzeugt, weiß ich nciht, aber es müsste irgendwie mit der Koordinaten-Klasse gehen, die ja eigentlich auch nur ein Array ist.
Oder du nimmst von vornherein GLScene, dann gibt's da ganze in 3D und die Vektor-Rechnung ist in gLScene optimiert und ich weiß auch, wie's dort geht, ich kann dir also helfen.
Tschüß
Thomas
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.