![]() |
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:
Da leigt auch bei meinem Programm eine kleine Schwachstelle, der Ball wandert manchmal durch den Schläger. Muss ich noch mal überarbeiten...
If Ballrechteck über Schlägerrechteck then Abprallen lassen
Gefällt den mein Proggi ? ;) // Edit: Neue Version ist da, mit "PC vs PC" Option |
Re: Simple Pong
ja ist nicht bad kannst dir ja mal mein pong angukcen
|
Re: Simple Pong
Habe ich, bei Gelegenheit schaue ich mir den Code an und gebe meinen Senf dazu... ;)
|
Re: Simple Pong
ich habe das in deinem programm noch nicht gefunden mit der abfrage kannszt die mal hier 1 zu 1 posten
|
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; |
Re: Simple Pong
Grenz doch einfach den Mauscursor auf dein Fenster ein solange ein Spiel läuft.
Geht so:
Delphi-Quellcode:
Mit
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);
Delphi-Quellcode:
machst du es wieder rückgängig. :-D
ClipCursor(nil);
|
Re: Simple Pong
sauber danke
|
Re: Simple Pong
@MisterNiceGuy: Hm, warum ? :gruebel: Dann wäre es ja noch einfacher und man((n) oder Frau) verliert dann ja nicht mehr. ;)
|
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. |
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. |
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