Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pong-Klon (https://www.delphipraxis.net/34119-pong-klon.html)

Darty 19. Nov 2004 17:40

Re: Pong-Klon
 
Zitat:

Zitat von Daniel
Nils - diese Frage kann unmöglich ernst gemeint gewesen sein.

:mrgreen: Haben wir ein neues Beruf gefunden :twisted:

Nils_13 19. Nov 2004 17:41

Re: Pong-Klon
 
War sie auch nicht :mrgreen:

@darty
1. Ja

2. 123-128

3. 130-135

4. Bei dem Gegner prallt der Ball einfach ab (mit Physik) und beim Spieler1 prallt er komischer Weise nicht ab.

Delphi-Quellcode:
//Kollisionserkennung
if ball.Left<0 then
begin
  t.Enabled:= false;
  ball.Visible:= false;
  go_p2;
end;
Delphi-Quellcode:
if ball.Left>445 then
begin
t.Enabled:= false;
ball.Visible:= false;
go_p1;
end;

Darty 19. Nov 2004 18:16

Re: Pong-Klon
 
Zitat:

Zitat von Nils_13
1. Ja

Schön
Zitat:

Zitat von Nils_13
2. 123-128
3. 130-135

Die Zeilen sind identisch mit den in Deiner Antwort 4 gepostete Codes.
Zitat:

Zitat von Nils_13
4. Bei dem Gegner prallt der Ball einfach ab (mit Physik) und beim Spieler1 prallt er komischer Weise nicht ab.

Delphi-Quellcode:
//Kollisionserkennung
if ball.Left<0 then // Wenn Linke Seite von Ball kleiner als 0 ist dann ...
begin // beginne
  t.Enabled:= false; // Timer ausschalten
  ball.Visible:= false; // Ball Ausblenden
  go_p2; // Gibt nur nen Text aus
end;
Delphi-Quellcode:
if ball.Left>445 then // Wenn Linke Seite vom Ball grösser als 445 ist dann ...
begin // beginne
t.Enabled:= false; // Timer ausschalten
ball.Visible:= false; // Ball Ausblenden
go_p1; // Gibt nur nen Text aus
end;

Kannst Du an den Kommentare die ich eingefügt habe erkennen das die Stelle die Du mir gezeigt hast doch keine Kollision Kontrolle ist. Sondern einfach nur das passieren soll wenn der Ball entweder bei 0 oder bei 445 ist.

Mal ehrlich Du hast doch den Code selber geschrieben oder ? Dann erklär es mir doch weil ich das nicht verstehe wo da die Kollisionfragen sein soll in den Zeilen ??

Zitat:

Bei dem Gegner prallt der Ball einfach ab (mit Physik) und beim Spieler1 prallt er komischer Weise nicht ab
Also wo ist die "Physik" in deinem Code ?

Pr0g 19. Nov 2004 18:44

Re: Pong-Klon
 
Zitat:

Zitat von Darty
Also wo ist die "Physik" in deinem Code ?

Siehst du sie etwas nicht :lol:


Ich denke mal das sind die Zeilen der Kollisionsabfrage:

Delphi-Quellcode:
if (Abs(ball.Left - enemy.left) <= 5) and (Abs(ball.Top - enemy.Top) <= 5) then xspeed:= -xspeed;
if (ball.top > player1.top -1-toleranz) and (ball.top < player1.top + player1.height +1+toleranz) and (ball.left = player1.left+player1.width) then xspeed := -xspeed;
und

Delphi-Quellcode:
if ball.Left<0 then xspeed := -xspeed;

if ball.Top<0 then yspeed := -yspeed;
if ball.Left>445 then xspeed := -xspeed;
if ball.Top>445 then yspeed := -yspeed;

Darty 19. Nov 2004 18:46

Re: Pong-Klon
 
Zitat:

Zitat von Pr0g
Zitat:

Zitat von Darty
Also wo ist die "Physik" in deinem Code ?

Siehst du sie etwas nicht :lol:

Doch sehe ich sie. Das Problem ist das jemand ein eigenes Programm schreibt und es selber nicht versteht. Das Kapier ich nicht :wall:

Nun hast Du es verraten aber er kommt jetzt auch nicht weiter :roll:

Nils_13 19. Nov 2004 18:48

Re: Pong-Klon
 
Physik ist vieleicht das Falsche Wort, ich meine die toleranz.

Darty 19. Nov 2004 18:51

Re: Pong-Klon
 
Was ist mit Toleranz ? erklär es doch mal näher ..

Nils_13 19. Nov 2004 18:53

Re: Pong-Klon
 
Ich hab doch im Quellcode, dass der Ball auch beim Spieler1 abprallen soll ... nur irgendwie funktioniert es nicht (wegen diesem Problem hab' ich das Thema aufgemacht) :gruebel:

Die Toleranz ist die Physik...
ok...

[edit=Christian Seehase]Beiträge zusammengefasst. Wäre schön, wenn Du die Edit Funktion auch mal benutzen würdest ;-). Danke. Mfg, Christian Seehase[/edit]

Pr0g 19. Nov 2004 18:59

Re: Pong-Klon
 
Wie war das noch mit der Edit Funktion :mrgreen:

Pr0g 19. Nov 2004 19:29

Re: Pong-Klon
 
Ich denke mal, dass das Problem folgendes ist: Du fragst bei der Kollisionskontrolle des Balls einen genauen Pixelwert der "Left"-Eigenschaft ab, welcher aber nie erreicht wird, da du den Ball immer um zwei Pixel bewegst. Ändere daher folgenden Code:
Delphi-Quellcode:
//Ballkollision
if (Abs(ball.Left - enemy.left) <= 5) and (Abs(ball.Top - enemy.Top) <= 5) then xspeed:= -xspeed;
if (ball.top > player1.top -1-toleranz) and (ball.top < player1.top + player1.height +1+toleranz) and (ball.left = player1.left+player1.width) then xspeed := -xspeed;
in diesem um:
Delphi-Quellcode:
//Ballkollision
if ((ball.Top > enemy.Top - 1 - toleranz) and (ball.Top < enemy.Top + enemy.Height + 1 + toleranz) and (ball.Left <= enemy.Left + enemy.width)) or
   ((ball.Top > player1.Top - 1 - toleranz) and (ball.Top < player1.Top + player1.Height + 1 + toleranz) and (ball.Left + ball.Width >= player1.Left)) then
  xspeed := -xspeed;
Die 1 in der Abfrage solltest du vielleicht noch bei Tollerarenz mit unterbringen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
Seite 3 von 4     123 4      

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