Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX -> MouseMove und DoCollision (https://www.delphipraxis.net/17860-delphix-mousemove-und-docollision.html)

ISAS 10. Mär 2004 18:10


DelphiX -> MouseMove und DoCollision
 
Habs nun geschafft, dass man jedes TPushable verschieben kann :-D . Schick mal den Quellcode (wie ich das meine) und dann erläutere ich ein bisschen.

Delphi-Quellcode:
procedure TPushable.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if klick = true then begin
if sprite = maus then begin

repeat

procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

X:=round(Maus.X / 32)*32;
Y:=round(Maus.Y / 32)*32;

procedure TForm1.DXDraw1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

until klick=false;

end;
end;

end;
Maus ist ein Srite mit den richtigen Mauskoordinaten.
Also, wenn man auf ein Sprite klickt, dann soll er zu repeat gehen. In diesem soll man die Position vom Sprite sollange verändern können(MouseMove), bis man MouseUp macht (denn da wird klick zu false). Das wäre es eigentlich schon.

PS: Wenn jemand eine andere Idee hat, wie man TPushable(Besteht aus mehreren Sprites mit verschiedenen Koordinaten) so machen kann, wie ich geschildert habe, dann immer her damit. :arrow:

PPS: Ein Problem gibs da noch. Wenn 2 Sprites dieselben Koordinaten haben, würde er dann beide nehmen und diese wären nicht mehr zu trennen. Lösungsvorschläge? :?:

PPPS: Danke, ISAS! :thuimb:

ISAS 11. Mär 2004 19:06

Re: DelphiX -> MouseMove und DoCollision
 
Hab das so gelöst: :thuimb:


Delphi-Quellcode:
if klick = true then begin
if sprite = maus then begin

if down=true then begin

repeat

X:=mouse.CursorPos.X-Form1.left-5;
Y:=mouse.CursorPos.Y-Form1.top-25;

until GetAsyncKeyState(VK_LBUTTON) = 0;
down:=false;

X:=trunc(X/32) * 32;
Y:=trunc(Y/32) * 32;

end;

end;
end;
end;
end;
end;
Sieht kompliziert aus :shock: , is es aber nicht :roll: .

ISAS 11. Mär 2004 19:06

Re: DelphiX -> MouseMove und DoCollision
 
Hab das so gelöst: :thuimb:


Delphi-Quellcode:
if klick = true then begin
if sprite = maus then begin

if down=true then begin

repeat

X:=mouse.CursorPos.X-Form1.left-5;
Y:=mouse.CursorPos.Y-Form1.top-25;

until GetAsyncKeyState(VK_LBUTTON) = 0;
down:=false;

X:=trunc(X/32) * 32;
Y:=trunc(Y/32) * 32;

end;

end;
end;
end;
end;
end;
Sieht kompliziert aus :shock: , is es aber nicht :roll: .

//[edit] Wieso hat der das 2mal gepostet?? Komisch
//[edit2] Mein Rollenspiel schreitet voran. Hab nun:

Leveleditor, Level laden, Gehen, Collision, Gegner (Leider noch kein besonders gutes Gehen ( hier gibts ein thread, wie ich die KI der Gegner mache, damit die nirgends hängen bleiben. Meins is nämlich noch simplest) und Sachen verschieben.

Übermorgen hab ich E-Schularbeit, dass heisst, morgen Pause und übermorgen werden einige neue Sachen gemacht.
Vorallem mal Sachen herumschieben, Waffen und Gegner attacken. Also, dass wars.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 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