![]() |
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:
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 :)
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; |
Re: Ping Pong Game schläger sollen nicht über fenster rand
Hab ich halt mit Hilfe dann selber gelöst...
Delphi-Quellcode:
cya
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; |
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 |
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