Hallo,
ich möchte das Spiel "eXtreme Towerdefence" nach machen mit meiner "2D Engine." Das ist so weit auch kein Problem.
Ein Problem habe ich jedoch und zwar: Jeder Turm soll ein Radios haben.
Beim Platzieren möchte ich diesen Radios anzeigen.
Also, ich habe unten mein Menu mit den Türmen die es gibt, jeder Turm hat sein Radios ich klicke auf ein Turm drauf gehe dann mit der Maus auf meine PaintBox jetzt soll der Radios in Form eines Kreis angezeigt werden.
Das Zweite:
Der Turm soll sich nur Gegner raussuchen die sich in diesen Radios bewegen.
Ausdem Buch:
"3D Programmierung mit Delphi für Kids"
habe ich folgende Funktion übernommen und angepasst:
Delphi-Quellcode:
procedure TForm1.ShotMove;
var
strecke, Steigung:Single;
xWeg,yWeg, xDiff, yDiff, Schritt, i, Speed,l,t:Integer;
begin
Speed:=20;
s3.left:=s2.left-(s1.Width div 2);
s3.top:=s2.top-(s1.Height div 2);
xWeg:=s1.Left - s2.Left;
yWeg:=s1.Top - s2.Top;
strecke:=sqrt(sqr(xWeg)+Sqr(yWeg));
Schritt:=Round(Strecke/Speed);
if Schritt = 0 then Schritt:=1;
xDiff:=xWeg div Schritt;
yDiff:=yWeg div Schritt;
if xWeg <> 0 then Steigung:=yWeg/xWeg else Steigung:=999;
for i:=1 to Schritt do begin
s3.left:=s3.Left+xDiff;
s3.top:=s3.Top+yDiff;
application.ProcessMessages;
s3.DrawSprite;
if New then begin
New:=False;
exit;
end;
Sleep(200);
{ if (steigung >-1) and (Steigung < 1) then
if xWeg < 0 then
s3.left:=s3.left-s3.Width
else
s3.left:=s3.left+s3.Width;
if (Steigung < -1) or (Steigung > 1) then
if yWeg < 0 then
s3.Top:=s3.Top-s3.Height
else
s3.Top:=s3.Top+s3.Height;}
end;
Timer1.Enabled:=False;
Engine.NewAllDraw;
das geht auch wunderbar.
wie ich ein Kreis zeichne weiß ich auch. Nur das mit dem Radios weiß ich leider nicht.
Ein Suche hier im Forum brachte leider keine Ergebnisse
Das ist jetzt nur ein Test Projekt, was ich extra für dieses Problem angefangen habe.