Registriert seit: 31. Mai 2009
1.198 Beiträge
Turbo Delphi für Win32
|
AW: Andorra 2d Billardspiel in 2d
27. Jul 2010, 21:57
Nur mal als Denkanstoß:
Warum benützt du nicht Vektoren? Hierzu müsstest du zumindest die Grundrechenfunktionen von Vektoren wissen.
Beispielscode:
Delphi-Quellcode:
type
TPointF = record
X, Y: Single;
end;
{...}
var
weißeKugel: TPointF;
weißeKugelGEIST: TPointF;
weißeKugelRichtungsVek: TPointF;
weißeKugelGeschwindigkeit: Single;
{...}
function PointF(const cX, cY: Single): TPointF;
begin
with Result do
begin
X := cX;
Y := cY;
end;
end;
{...}
weißeKugelRichtungsVek := PointF( weißeKugelGEIST.X - weißeKugel.X, weißeKugelGeist.Y - weißeKugel.Y );
weißeKugelGeschwindigkeit := SQRT( SQR(weißeKugelRichtungsVek.X) + SQR(weißeKugelRichtungsVek.Y) );
weißeKugelRichtungsVek.X := weißeKugelRichtungsVek.X / weißeKugelGeschwindigkeit;
weißeKugelRichtungsVek.Y := weißeKugelRichtungsVek.Y / weißeKugelGeschwindigkeit;
{
- Erläuterung:
weißeKugelRichtungsVek ist ein auf 1 normierter Vektor (dh. die Länge des Vektors (Pfeiles) beträgt 1)
weißeKugelGeschwindigkeit ist die Länge des Vektors (also die Länge des Pfeiles)
- Hinweis:
Wenn du jetzt zB. die Position des Balles ändern willst, müsstest du halt ca. so vorangehen:
weißeKugel := PointF( weißeKugel.X + weißeKugelRichtungsVek.X * weißeKugelGeschwindigkeit, weißeKugel.Y + weißeKugelRichtungsVek.Y * weißeKugelGeschwindigkeit );
}
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
|