AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ping Pong Game schläger sollen nicht über fenster rand
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Daveman · begonnen am 11. Jun 2004 · letzter Beitrag vom 13. Jun 2004
Antwort Antwort
Daveman

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

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

  Alt 11. Jun 2004, 17: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
Daveman

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

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

  Alt 12. Jun 2004, 22:58
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
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#3

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

  Alt 13. Jun 2004, 01:54
nimm statt 544 doch lieber das form.height
dann kannst das form auch größer ziehen und alles funzt noch
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Daveman

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

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

  Alt 13. Jun 2004, 09:47
ich habe das noch mit balken gemacht an den rändern, sieht schöner aus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz