![]() |
*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 |
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:... |
Re: Problem...
Problem. Habe ich auch und zwar mit dem Titel deines Topics, es ist nicht sehr aussagekräftig. Ich bitte um Bsserung. :warn:
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
yo Entschuldigung...besser?
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Moin Ille,
:thuimb: |
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 :(
|
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:
[edit=Christian Seehase] Delphi Tags ergänzt Mfg, Christian Seehase[/edit]
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 ; |
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. |
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. |
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 ![]() Kollisionserkennung hatten wir schon ein paar Mal. |
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.<--- ° - | | | | - |
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.
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Zitat:
-> 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. |
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:
Die Edits sind oben und unten. Die Edits werden horizontal zentriert, der Shape inner halb das Formulares.
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; [EDIT] fUp ist eine globale boolean Variable. Vorbesetzt mit true; [/EDIT] |
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 :(
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
naja ich kriegs nicht hin :( diesmal gehe ich wirklich pennen :P
|
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 :(
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Hallo,
vielleicht ist das etwas leichter für Dich zum verstehen. ![]() Grüsse, Daniel :hi: |
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.
|
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] |
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
mhh... danke nochmal ich habs glaube ich hinbekommen mit dem Code:
Code:
aber kleiner bug is noch drin :(
if (shape1.left>=edit2.left-edit2.width) and(shape1.Top >= edit2.Top)and (shape1.Top <=edit2.top-edit2.height) then
x:=x*-1; |
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Moin Ille,
Ist Edit2 jetzt links oder rechts? |
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
also ich bin am verzweifeln hehe rechts ist das edit2
|
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Moin Ille,
Ich denke mal so
Delphi-Quellcode:
weil:
if ((Shape1.Left+Shape1.Width+X) >= Edit2.Left)
and ((Shape1.Top+Shape1.Height) >= Edit2.Top) and (Shape1.Top <= (Edit2.Top+Edit2.Height)) then
|
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. |
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] |
Re: *Help* +Spiel Ping Pong (abprallen vom ball)
Neue Frage, neuer Thread. Zu.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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