Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi *Help* +Spiel Ping Pong (abprallen vom ball) (https://www.delphipraxis.net/6663-%2Ahelp%2A-spiel-ping-pong-abprallen-vom-ball.html)

iLLe 17. Jul 2003 19:52


*Help* +Spiel Ping Pong (abprallen vom ball)
 
Ich will ein Spiel machen Ping Pong. Mein problem ist das der ball ( ein shape) immer abprallen tut auch wenn er nicht den schläger berührt weil ich abfrage if ball.left > schläger.left then abprallen halt
naja und ich will das wen er nicht den schläger berührt einfach durchläuft und verschwindet. Naja ich werde verrückt ich kriegs nicht hin hoffe jemand kann mir helfen danke schon mal im vorraus

sakura 17. Jul 2003 19:56

Re: Problem...
 
Hi und herzlich willkommen.

Als erstes ändere bitte mal die Überschrift Deines Beitrages. Das Du ein Problem hast ist uns klar, sonst würdest Du ja nicht posten :roll: Du hast den AGBs zugestimmt ud damit auch, daß Du aussagekräftige Titel nutzt :warn:

...:cat:...

Luckie 17. Jul 2003 19:56

Re: Problem...
 
Problem. Habe ich auch und zwar mit dem Titel deines Topics, es ist nicht sehr aussagekräftig. Ich bitte um Bsserung. :warn:

iLLe 17. Jul 2003 20:05

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
yo Entschuldigung...besser?

Christian Seehase 17. Jul 2003 20:49

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

:thuimb:

iLLe 17. Jul 2003 20:51

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
naja ich geh demnächst pennen fals mir jemand helfen kann wäre nett bin echt am evrzweifeln :(

iLLe 17. Jul 2003 22:41

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
das is der code den ich bis her habe der ball fliegt in der form herum naja auch wen ein schläger ihn nicht berührt aber ich kriegs einfach nicht hin bzw. konnte nicht schlafen :(
Delphi-Quellcode:
  shape1.Left:=shape1.left+x;
  shape1.top:=shape1.top+y;
{if (shape1.top >Edit2.height) and (shape1.left>edit2.left) then
      begin
   shape1.Left:=250;
   shape1.Visible:=false;
   Timer1.enabled:=false;
   exit
  end; }
if (shape1.left>=edit2.left-edit2.width) OR (shape1.left-shape1.width<edit1.left)  then
   x:=x*-1;
if (shape1.top<0)OR(shape1.top+shape1.clientheight>form3.ClientHeight) then
    y:=y*-1 ;
[edit=Christian Seehase] Delphi Tags ergänzt Mfg, Christian Seehase[/edit]

Christian Seehase 17. Jul 2003 23:06

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

also mit dem Code Fragment kann ich so nichts anfangen, häng das Projekt doch mal gezippt (bitte ohne die DCUs / EXE) als Attachement hier an.

BTW:
Es gibt hier Delphi Tags für die Formatierung von Codeabschnitten.
Ich hab' das mal in Deinem Beitrag nachgetragen.
Bitte künftig selber verwenden. Danke.

iLLe 17. Jul 2003 23:49

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Naja das mit dem Programm hier reinmachen ist schlecht weil das für jemanden ist und da einige sachen drin sind naja wenn ihr versteht :mrgreen: also ich hab nur ein problem und das ist das das shape immer am left vom edit abprallt aber das soll es nur wenn es das edit berührt.Und wen es das edit nicht berührt soll es durchlaufen und kurz darauf verschwinden.
kurz gesagt: mir fehlt eine if abfrage aber ich weiss nicht wie ich die realisieren soll.

Christian Seehase 18. Jul 2003 00:11

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

tut mir leid, aber der Codeschnipsel ist so aus dem Zusammenhang gerissen, dass ich da überhaupt nicht durchblicke.
Wie sind x und y deklariert, wie werden die initalisiert, wodrin ist das Codefragment enthalten (ich vermute Timer Event)?

Vielleicht hilft es Dir weiter, wenn Du mal nach Hier im Forum suchenkollision suchst.
Kollisionserkennung hatten wir schon ein paar Mal.

Luckie 18. Jul 2003 00:11

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Na du mußt nicht niur die x-Koordinate abfragen, sondern auch die y-Koordinate. Kuck dir das man an:

Code:

       <---  °

 -
| |
| |
 -
Du mußt eben auch kucken, ob der Ball den Schläger trifft nicht nur, ob er sich links oder rechts davon befinden.

iLLe 18. Jul 2003 00:22

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
ja aber wie mach ich das die y koordinate ändert sich vom edit feld immer und vom ball und ich muss ja ne strecke sozusagen abfragen also das height vom edit feld sozusagen naja irgendwie krieg ich das nicht hin.

iLLe 18. Jul 2003 00:29

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Zitat:

Zitat von Christian Seehase
Moin Ille,

tut mir leid, aber der Codeschnipsel ist so aus dem Zusammenhang gerissen, dass ich da überhaupt nicht durchblicke.
Wie sind x und y deklariert, wie werden die initalisiert, wodrin ist das Codefragment enthalten (ich vermute Timer Event)?

Vielleicht hilft es Dir weiter, wenn Du mal nach Hier im Forum suchenkollision suchst.
Kollisionserkennung hatten wir schon ein paar Mal.

Ja im Timer Event x und y sind global deklariert und unter form create
-> x=10 & y=5 hoffe das hilft.
bzw. ich hab mal in Schule ne Komponente gemacht gehabt fals ihr das vielleicht gebrauchen könnt könnt ich euch geben als beispiel proggramm oda so.

Christian Seehase 18. Jul 2003 01:26

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

ein kleines Beispiel, wie man den Shape zwischen den Edits hin- und herlaufen lassen kann.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Top := trunc((Form1.ClientRect.Bottom-Form1.ClientRect.Top-Shape1.Height)/2);
  Shape1.Left := trunc((Form1.ClientRect.Right-Form1.ClientRect.Left-Shape1.Width)/2);
  Edit1.Left := trunc((Form1.ClientRect.Right-Form1.ClientRect.Left-Edit1.Width)/2);
  Edit2.Left := Edit1.Left;
  Edit1.Top  := 0;
  Edit2.Top  := Form1.ClientRect.Bottom-Edit2.Height;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  try
    if fUp then begin
      if Shape1.Top > Edit1.Height then begin
        Shape1.Top := Shape1.Top-3;
      end else begin
        if ((Shape1.Left+trunc(Shape1.Width/2)) >= Edit1.Left) and
           ((Shape1.Left+trunc(Shape1.Width/2)) <= (Edit1.Left+Edit1.Width)) then begin
          fUp := not fUp;
        end else begin
          Shape1.Visible := false;
        end;
      end;
    end else begin
      if (Shape1.Top+Shape1.Height) < Edit2.Top then begin
        Shape1.Top := Shape1.Top +3;
      end else begin
        if ((Shape1.Left+trunc(Shape1.Width/2)) >= Edit2.Left) and
           ((Shape1.Left+trunc(Shape1.Width/2)) <= (Edit2.Left+Edit2.Width)) then begin
          fUp := not fUp;
        end else begin
          Shape1.Visible := false;
        end;
      end;
    end;
  finally
    Timer1.Enabled := true;
  end;
end;
Die Edits sind oben und unten. Die Edits werden horizontal zentriert, der Shape inner halb das Formulares.

[EDIT]
fUp ist eine globale boolean Variable. Vorbesetzt mit true;
[/EDIT]

iLLe 18. Jul 2003 02:53

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Ich hab meine schläger links und rechts nicht oben und unten und die bewegen sich ja die ganze zeit deshalb weiss ich nicht wie ich das machen soll ich hab ja nie nen festen wert :(

iLLe 18. Jul 2003 03:22

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
naja ich kriegs nicht hin :( diesmal gehe ich wirklich pennen :P

iLLe 18. Jul 2003 12:21

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
so bin wieder wach wie ich sehe noch kein weiterer vorschlag :( ich erinnere mich daran das wirs mal in der schule gemacht hatten aber wie weiss sich nicht mehr :(

Daniel B 18. Jul 2003 12:22

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Hallo,

vielleicht ist das etwas leichter für Dich zum verstehen.
http://www.delphipraxis.net/viewtopic.php?t=2886

Grüsse, Daniel :hi:

iLLe 18. Jul 2003 12:50

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
das kenne ich schon mein problem ist einfach das sich das edit feld immer bewegt und sich sein top immer verändert und ich nicht richtig weiss wie ich die y-koordinate abfragen soll.

Christian Seehase 18. Jul 2003 12:57

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

wenn Du als Oberkante Edit1.Top nimmst sollte das aber gehen.
Wenn sich die Position des Edits ändert, ändert sich auch Top.

In meinem Beispiel müsste man "nur" Eigenschaften (Top,Left,Width usw.) gegen die entsprechenden für die Links/Rechts Bewegung austauschen.
Aus Shape1.Top müsste also z.b. Shape1.Left werden.

[EDIT]
Voraussetzungen
Edit1 ist links, Edit2 rechts
Im Beispiel ist Edit1 oben, Edit2 unten
[/EDIT]

iLLe 18. Jul 2003 13:11

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
mhh... danke nochmal ich habs glaube ich hinbekommen mit dem Code:
Code:
if (shape1.left>=edit2.left-edit2.width) and(shape1.Top >= edit2.Top)and (shape1.Top <=edit2.top-edit2.height) then
 x:=x*-1;
aber kleiner bug is noch drin :(

Christian Seehase 18. Jul 2003 13:16

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

Ist Edit2 jetzt links oder rechts?

iLLe 18. Jul 2003 13:24

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
also ich bin am verzweifeln hehe rechts ist das edit2

Christian Seehase 18. Jul 2003 14:28

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Moin Ille,

Ich denke mal so

Delphi-Quellcode:
if ((Shape1.Left+Shape1.Width+X) >= Edit2.Left)
   and
   ((Shape1.Top+Shape1.Height) >= Edit2.Top)
   and
   (Shape1.Top <= (Edit2.Top+Edit2.Height)) then
weil:
  1. Shape1.Left+Shape1.Width+X
    Linke Seite + Breite + nächste Bewegung muss grösser oder gleich der linken Seite des rechten Schlägers damit der Ball abprallt.
  2. Shape1.Top+Shape1.Height
    Obere Seite + Höhe müssen grösser oder gleich der Oberkante des Edits sein, da Oberkante+Höhe=Unterkante sind, und diese ja wohl mindestens den Schläger berühren muss, damit der Ball getroffen wird.
  3. Edit2.Top+Edit2.Height
    Ober Kante + Höhe = Unterkante des Schlägers. Die Oberkante des Shapes (Top) muss diese mindestens erreichen um abprallen zu können.

iLLe 19. Jul 2003 13:00

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
ich konnte es gestern nicht mehr ausprobieren habe es gerade eben getestet und es scheint zu gehen. Nochmals danke @ Christian
weiss eventuelle noch einer wie ich nach nem knopfdruck automatisch den cursor in nem bestimmten edit drin ist.

iLLe 19. Jul 2003 15:03

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
mhh... ich dachte immer wen man rechtsklick auf nen object macht und nach vorne setzten ist es im vorder grund das klappt bei mir irgendwie nicht

[edit=Daniel B]Doppel-Post gelöscht. Mfg, Daniel B[/edit]

Luckie 19. Jul 2003 19:28

Re: *Help* +Spiel Ping Pong (abprallen vom ball)
 
Neue Frage, neuer Thread. Zu.


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