Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ping Pong Game schläger sollen nicht über fenster rand (https://www.delphipraxis.net/23898-ping-pong-game-schlaeger-sollen-nicht-ueber-fenster-rand.html)

Daveman 11. Jun 2004 17:05


Ping Pong Game schläger sollen nicht über fenster rand
 
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 :)

Daveman 12. Jun 2004 22:58

Re: Ping Pong Game schläger sollen nicht über fenster rand
 
Hab ich halt mit Hilfe dann selber gelöst...

Delphi-Quellcode:
procedure TTennisForm.schlaegerrechtsTimer(Sender: TObject);
begin
  paddlerechts.Top := paddlerechts.Top + hochrunterrechts;
  if Paddlerechts.top < 18 then
     begin
       // Oben angestoßen
       Paddlerechts.top :=18;
     end;
  If Paddlerechts.top + PaddleRechts.Height > 544 then
     begin
       // Unten angestoßen
       Paddlerechts.top := 544 - PaddleRechts.Height;
       HochRunterRechts :=0;
     end;
end;
cya

supermuckl 13. Jun 2004 01:54

Re: Ping Pong Game schläger sollen nicht über fenster rand
 
nimm statt 544 doch lieber das form.height
dann kannst das form auch größer ziehen und alles funzt noch

Daveman 13. Jun 2004 09:47

Re: Ping Pong Game schläger sollen nicht über fenster rand
 
ich habe das noch mit balken gemacht an den rändern, sieht schöner aus :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz