naja wenn du willst kann ich dir auch meinen Code Hochladen also das Projeckt und dann kannste da auch nochn paar Sachen nach gucken aber ich muss halt dazu sagen das es sehr durcheinander ist weil ich mit dem Hauptprogramm angefangen habe und dann die ganze Zeit Funktionen einfüge
Also ich hab ja bei mir alle Türme als Bild mit den Maßen von 60*50px und da habe ich es so gemacht:
In meiner DoMove procedure vom Turm steht:
Delphi-Quellcode:
if CanMove then begin
while 25+Form1.ScreenToClient(Mouse.CursorPos).X<sX do begin sX:=sX-25; end;
while Form1.ScreenToClient(Mouse.CursorPos).X>sX+25 do begin sX:=sX+25; end;
while 30+Form1.ScreenToClient(Mouse.CursorPos).Y<sY do begin sY:=sY-30; end;
while Form1.ScreenToClient(Mouse.CursorPos).Y>sY+30 do begin sY:=sY+30; end;
X:= sX-25;
Y:= sY-30;
Z:= Round(Y);
canBuild:=true;
collision;
if canBuild then Image := Form1.AdImageList1.Find('build');
if not canBuild then Image := Form1.AdImageList1.Find('nobuild');
end;
Ich habe eine Bool var genommen die am Anfang auf True steht und nachdem man den Turm gebaut hat auf False gesetzt wird (halt einfach nur damit der Turm sich dann nicht mehr Bewegt) und dann einfach viele kleine while Schleifen (If würde es auch tun aber so ist es besser) und wenn die Maus sich dann halt über 25px in X Richtung Bewegt oder 30px auf Y dann wird je nachdem sX und sY um den Raster Wert erhöt/veringert (in sX und sY habe ich beim erstellen des Sprites/Bildes die Kordinaten gespeichert).
Da wo dann dem X der Wert von sX übergeben wird hab ich einfach noch 25 abgezogen sodass sich der Cursor in der Mitte befindet.
Ja gut Z=Y sollte klar sein denn das was weiter oben auf der Y Achse ist ist weiter entfernt.
Und der Rest bestimmt nur ob man an diesem Ort bauen kann und welches Bild gezeigt wird.
Ich hoffe ich konnte dir Helfen..
naja aber die anderen wollen es ja vergrößern (oder besser gesagt einfach größer haben)... deswegen