Hallo, herzlich willkommen in der Delphi-Praxis!
ganz wird dir dein Problem niemand lösen. Womit hast du denn Probleme?
in der onmousemove-Prozedur hast du die beiden Variablen x und y, die die Position der Maus angeben. Daraus kannst du eine Position für das Panel berechnen. z.B. so:
panel1.left:=x-form1.left-(panel1.width div 2);
dann musst du entsprechend überprüfen ob der Panel den Ball bereits überlappt, und wenn ja, dann drehst du die y-Geschwindigkeit des Balles um:
Delphi-Quellcode:
var
ballmittelpunkt:integer;
begin
ballmittelpunkt:=ball.left+(ball.width div 2);
if (ballmittelpunkt>panel1.left {falls der Ballmittelpunkt weiter rechts ist als das linke Ende des Schlägers...})
and (ball.left+(ball.width div 2)<panel1.left+panel1.width {und der Ballmittelpunkt weiter links ist als das rechte Ende des Schlägers})
and (ball.top+ball.height>=panel1.top {und der Ball überhaupt unterhalb des schlägers ist})
then {dann}
begin
ball.yspeed:=-ball.yspeed; //YSpeed des Balls umkehren (jetzt geht's nach oben)
ball.ypos:=panel1.top+1; //Ball überhalb des Schlägers positionieren, damit nicht gleich wieder ein Effekt ausgelöst wird
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates