Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Game] Simple Pong (https://www.delphipraxis.net/63843-%5Bgame%5D-simple-pong.html)

turboPASCAL 28. Feb 2006 10:46

Re: Simple Pong
 
Die Abfrage ist recht einfach, es wird geprüft of sich ein Rechteck über einem anderen Rechteck befindet ( Ball <-> Schläger ).
Also nach dem Motto:
Code:
If Ballrechteck über Schlägerrechteck then Abprallen lassen
Da leigt auch bei meinem Programm eine kleine Schwachstelle, der Ball wandert manchmal durch den Schläger. Muss ich noch mal überarbeiten...

Gefällt den mein Proggi ? ;)

// Edit: Neue Version ist da, mit "PC vs PC" Option

Sascha_OW 28. Feb 2006 11:02

Re: Simple Pong
 
ja ist nicht bad kannst dir ja mal mein pong angukcen

turboPASCAL 28. Feb 2006 11:07

Re: Simple Pong
 
Habe ich, bei Gelegenheit schaue ich mir den Code an und gebe meinen Senf dazu... ;)

Sascha_OW 28. Feb 2006 11:14

Re: Simple Pong
 
ich habe das in deinem programm noch nicht gefunden mit der abfrage kannszt die mal hier 1 zu 1 posten

turboPASCAL 28. Feb 2006 11:23

Re: Simple Pong
 
Delphi-Quellcode:
// Die Prüffunktion
function OverlapRect(const Rect1, Rect2: TRect): Boolean;
begin
  Result :=
    (Rect1.Left  <= Rect2.Right) and
    (Rect1.Right >= Rect2.Left) and
    (Rect1.Top   <= Rect2.Bottom) and
    (Rect1.Bottom >= Rect2.Top);
end;
Delphi-Quellcode:
  // Die Überprüfung ob sich ein Rechteck in/ über einem anderem befindet
  if OverlapRect( // Ball bei/über Schl. 1 ?               
    Rect(Ball.X, Ball.Y, Ball.X + Ball.Bmp.Width, Ball.Y + Ball.Bmp.Height),
    Rect(Schl1.X, Schl1.Y, Schl1.X + Schl1.Bmp.Width, Schl1.Y + Schl1.Bmp.Height)
    ) or
    OverlapRect( // Ball bei/über Schl. 2 ?
    Rect(Ball.X, Ball.Y, Ball.X + Ball.Bmp.Width, Ball.Y + Ball.Bmp.Height),
    Rect(Schl2.X, Schl2.Y, Schl2.X + Schl2.Bmp.Width, Schl2.Y + Schl2.Bmp.Height)
    ) then
  begin
    // Abprallen lassen / also einfach die Richtung umkeren.
    // Das Random ist dazu da, dass der winkel nicht immer gleich ist
    // sonst könnte man die Schläger an einer passenden Stelle belassen
    // und der ball würde immer wieder die selbe Schtrecke benutzen
    vx := vx * -1 -(1+random(2));
    vy := vy * -1 -(1+random(2));
  end;

MisterNiceGuy 28. Feb 2006 11:24

Re: Simple Pong
 
Grenz doch einfach den Mauscursor auf dein Fenster ein solange ein Spiel läuft.
Geht so:
Delphi-Quellcode:
var
  Rect: TRect;
begin
  Rect.Left  := Form1.Left;
  Rect.Top   := Form1.Top;
  Rect.Right := Form1.Left + Form1.Width;
  Rect.Bottom := Form1.Top + Form1.Height;
  ClipCursor(@Rect);
Mit
Delphi-Quellcode:
ClipCursor(nil);
machst du es wieder rückgängig. :-D

Sascha_OW 28. Feb 2006 11:27

Re: Simple Pong
 
sauber danke

turboPASCAL 28. Feb 2006 11:46

Re: Simple Pong
 
@MisterNiceGuy: Hm, warum ? :gruebel: Dann wäre es ja noch einfacher und man((n) oder Frau) verliert dann ja nicht mehr. ;)

turboPASCAL 18. Nov 2006 21:45

Re: [Game] Simple Pong
 
Habe endlich diesen blöden Fehler "Ball durch Schläger" gefunden und behoben glaube ich.
Bitte mal die neue Version testen wenn ihr Lust und Zeit habt.

turboPASCAL 27. Jan 2007 19:21

Re: [Game] Simple Pong
 
Habe gerade mal ein Update hochgeladen (erster Post), neue Features etc.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 2 von 3     12 3      

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