Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Ping Pong @ Delphi (https://www.delphipraxis.net/148425-ping-pong-%40-delphi.html)

capsoule 1. Mär 2010 18:31


Ping Pong @ Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo leute,
ich bin neu hier..Hab mich grade angemeldet, weil ich eure Hilfe brauche :P
Ich programmier grad das Kultspiel "Ping Pong" mit Delphi.

Hatte viele Probleme, weil ich noch ein ziemlicher Anfänger bin, was Programmieren angeht.
Einige konnte ich lösen, habe mir auch schon auf anderen Seiten Rat gesucht. Nun habe ich grad heute das Problem geknackt, wie ich meine Spieler bewegen kann, denn ich wusste nicht, wie das Prog abfragen soll, welche Taste ich gerade drücke um den Spieler zu bewegen (1. Player: W,S ; 2. Player: I,K)
Allerdings habe ich das in einer neuen VCL gemacht...Hat super geklappt.
Eben wollt ichs in mein Ping Pong einbinden...aber es tut sich gar nichts. Vielleicht wisst ihr wo der Fehler ist.

Danke für alle Tipps

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (key='s') and (panel2.top<(320-75)) then //spieler1 W(oben) & S(unten)
    panel2.top:=panel2.top+5
  else
    if (key='w') and (panel2.Top>0) then
        panel2.Top:=panel2.Top-5;
  if (key='i') and (panel3.top<(320-75)) then //spieler2 I(oben) & K(unten)
    panel3.top:=panel3.top+5
  else
    if (key='k') and (panel3.Top>0) then
        panel3.Top:=panel3.Top-5;
 


end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (shape1.Top<panel2.Top) or (shape1.Top>(panel2.top+300)) then //spieler1
    begin
      if shape1.left<(panel2.Left+30) then
        begin
          x:=0;
          y:=0 ;
          panel2.Color:=clred;
          panel3.Color:=clgreen;
          shape1.top:=450-32;
          shape1.Left:=600-32;
          punkt2:=punkt2+1;
          label2.Caption:=inttostr(punkt2);
        end;
  end;


  if (shape1.left<(panel2.left+30)) then
    begin
      x:=-x;
    end;    //ende player 1

  if (shape1.Top<panel3.Top) or (shape1.Top>(panel3.top+300)) then //spieler2
    begin
      if (shape1.left+65)>panel3.Left then
        begin
         x:=0;
         y:=0 ;
         panel2.Color:=clgreen;
         panel3.Color:=clred;
         shape1.top:=450-32;
         shape1.Left:=600-32;
         punkt1:=punkt1+1;
         label1.Caption:=inttostr(punkt1);
        end;
    end;


  if (shape1.Left+65)>panel3.left then
    begin
      x:=-x;
    end;   //ende player 2

  if (shape1.top<0) or (shape1.Top>840) then
    begin
      y:=-y;
    end;


shape1.Left:=shape1.Left+x;
shape1.Top:=shape1.top+y;

ryLIX 1. Mär 2010 19:02

Re: Ping Pong @ Delphi
 
1. Arbeitest du wirklich mit .NET oder doch eher mit Win32?

2. Bei FormKeyPress(Sender: TObject; var Key: Char) sollte Key vom Typ Char sein.
Versuch mal:
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (key=Char('s')) and (panel2.top<(320-75)) then //spieler1 W(oben) & S(unten)
    panel2.top:=panel2.top+5
  else
    if (key=Char('w')) and (panel2.Top>0) then
        panel2.Top:=panel2.Top-5;
  if (key=Char('i')) and (panel3.top<(320-75)) then //spieler2 I(oben) & K(unten)
    panel3.top:=panel3.top+5
  else
    if (key=Char('k')) and (panel3.Top>0) then
        panel3.Top:=panel3.Top-5;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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