Einzelnen Beitrag anzeigen

bastischo

Registriert seit: 12. Jan 2006
Ort: Planet Erde
40 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit Kollisionsabfrage.

  Alt 24. Mai 2006, 22:48
Ich habe mir ein rundes Pong geschrieben.
Also das Paddle bewegt sich auf einer Kreisbahn und der Ball darf diesen kreis nicht verlassen. Bei meiner Kollisionsabfrage zwischen Ball und Paddle gibt es aber das komische Problem, dass der Ball manchmal hängenbleibt oder HINDURCHWANDERT.
Delphi-Quellcode:
procedure TBall.stoss(aPaddle:TPaddle);
var i:integer;
begin
for i:= aPaddle.Winkel-aPaddle.Breite to aPaddle.Winkel+aPaddle.Breite do
if sqrt(sqr(x-(round(cos(i/57.3)*(150))+200))+sqr(y-(round(sin(i/57.3)*(150))+200)))<r+8 then
  begin
  if vx>0 then vx:=-random(5)+1 else vx:=random(5)+1;
  if vy>0 then vy:=-random(5)+1 else vy:=random(5)+1;
  Punkte:=Punkte+1;
  end;
end;
Also das mit dem random ist nur zum testen da und es funktioniert auch ohne noch nicht. (z.B. vx:=-vx).

Mein Timer der das ganze regelt sieht so aus:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
if GetAsyncKeystate(VK_LEFT) < 0 then
Paddle.move(Paintbox1.Canvas,6)
else
if GetAsyncKeystate(VK_RIGHT) < 0 then
Paddle.move(Paintbox1.Canvas,-6)
else
Paddle.move(Paintbox1.Canvas,0);
for i:= 1 to High(Ball) do
Ball[i].move(Paintbox1.Canvas);
Form1.Caption:='Cyclo Pong - '+inttostr(Punkte)+' Punkte';
end;
Ball und Paddle sind heir eben meine
TBall(x,y(koordinaten),vx,vy(geschwindigkeiten),r( radius),farbe) variable und meine
TPaddle(Winkel,Breite und farbe) variable.


Hat vllt jemand 'ne idee wie ich das Problem beheben könnte?
  Mit Zitat antworten Zitat