Einzelnen Beitrag anzeigen

Daveman

Registriert seit: 9. Jun 2004
3 Beiträge
 
#1

Ping Pong Game schläger sollen nicht über fenster rand

  Alt 11. Jun 2004, 18:05
huhu,

mein Problem ist, das bei meinem ping pong spiel die schläger über das obere und untere spielfeld raus gehen. Kann mir da einer Helfen, das das nicht passiert?

Hier ein paar code schnipsel, vielleicht helfen die euch ja...


Delphi-Quellcode:
procedure TTennisForm.BallTimerTimer(Sender: TObject);
begin
Spieler1 := StrToInt(StandForm.Spieler1cap.Caption);
Spieler2 := StrToInt(StandForm.Spieler2cap.Caption);

//Unten abprallen
  If Ball.Top + Ball.Height >= unten.Top then
     BallVectorV := BallVectorV * (-1);

//Linke Wand aus
  If Ball.Left <= Links.Left + Links.Width then
     begin
       BallTimer.Enabled := false;
       schneller.Enabled := false;
       StandForm.Spieler1cap.Caption := IntToStr(Spieler1 +1);
       standform.showmodal;
     end;

//Paddlelinks abprallen
  If (Ball.Left <= Paddlelinks.Left+Paddlelinks.Width) and
     ((Ball.Top+Ball.Height) >= Paddlelinks.Top) and
     (Ball.Top <= (Paddlelinks.Top+Paddlelinks.Height)) then
     BallVectorH := BallVectorH * (-1);

//Oben abprallen
  If Ball.Top <= Oben.Top + Oben.Height then
     BallVectorV := BallVectorV * (-1);

//Rechte Wand aus
  If Ball.Left + Ball.Width >= Rechts.Left then
     begin
       BallTimer.Enabled := false;
       schneller.Enabled := false;
       StandForm.Spieler2cap.Caption := IntToStr(Spieler2 +1);
       standform.showmodal;
     end;

//Paddlerechts abprallen
  If ((Ball.Left+Ball.Width) >= Paddlerechts.Left) and
     ((Ball.Top+Ball.Height) >= Paddlerechts.Top) and
     (Ball.Top <= (Paddlerechts.Top+Paddlerechts.Height)) then
     BallVectorH := BallVectorH * (-1);

//Ball Bewegung
  case BallVectorV of
    1: Ball.Top := Ball.Top + Positiv;
   -1: Ball.Top := Ball.Top - Negativ;
  end;
  case BallVectorH of
    1: Ball.Left := Ball.Left - Negativ;
   -1: Ball.Left := Ball.Left + Positiv;
  end
end;



procedure TTennisForm.schlaegerrechtsTimer(Sender: TObject);
begin
  paddlerechts.Top := paddlerechts.Top + hochrunterrechts;
end;

procedure TTennisForm.schlaegerlinksTimer(Sender: TObject);
begin
  paddlelinks.Top := paddlelinks.Top + hochrunterlinks;
end;

procedure TTennisForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//rechter schläger
  If key = vk_down then
     begin
       hochrunterrechts := +15;
       schlaegerrechts.Enabled := true;
     end;
  If key = vk_up then
     begin
       hochrunterrechts := -15;
       schlaegerrechts.Enabled := true;
     end;

//linkerschläger
  If key = 83 then
     begin
       hochrunterlinks := +15;
       schlaegerlinks.Enabled := true;
     end;
  If key = 87 then
     begin
       hochrunterlinks := -15;
       schlaegerlinks.Enabled := true;
     end;
end;

procedure TTennisForm.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  If (key = vk_down) or (key = vk_up) then
     schlaegerrechts.Enabled := false;
  If (key = 87) or (key = 83) then
     schlaegerlinks.Enabled := false;
end;
ich habe es schon ausprobiert mit if paddlerechts.top >= 17 then usw das bringt aber wahrscheinlich nichts in der Keydown procedure... Bin über jede Hilfe Dankbar
  Mit Zitat antworten Zitat