Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX - mehrere Sprites als Hürde (https://www.delphipraxis.net/31977-delphix-mehrere-sprites-als-huerde.html)

Snowi 16. Okt 2004 15:12


DelphiX - mehrere Sprites als Hürde
 
Hi,
wenn ich in DelphiX mehrere quadratische Steine (à la Bomberman) auf dem Spielfeld erstelle

Delphi-Quellcode:
 for I := 1 to 300 do begin
  with TStein.Create(DXSpriteEngine1.Engine) do
  begin
   x:=random(21)*30;
   y:=random(21)*30;
   Name := 'Stein'+inttostr(I);
  end;
  end;
und dann eine Collisionsabfrage von einem Computerspieler für diese Steine mache

Delphi-Quellcode:
procedure TCPU.DoCollision(Sprite: TSprite; var Done: Boolean);
var
 I: Integer;
begin
inherited DoCollision(Sprite, Done);
  if sprite is TStein then begin
   case Direction of
   1:  begin
         x := x + 1;
         Direction := 3;
        end;
   2:  begin
         y := y - 1;
         Direction := 4;
        end;
   3:  begin
         x := x - 1;
         Direction := 1;
        end;
   4:  begin
         y := y + 1;
         Direction := 2;
        end;
   end;
(Direction ist für 1= links, 2= unten, 3= rechts, 4= oben)

Dann klappt das zwar bei den meisten Steinen, aber einige werden trotzdem ignoriert und der Computer läuft durch. Ich habe schon probiert, ob er die Stelle mit dem Case of überhaupt erreicht und das tut er auch, aber er geht einfach durch den Stein durch.

Jmd ne Ahnung, warum einige Steine dann nicht mehr beachtet werden?

mimi 18. Okt 2004 08:12

Re: DelphiX - mehrere Sprites als Hürde
 
es könnte sein das nicht alle objekte von typ TStein ist.

oder du hast beim erstellen von sprits vergessen die größe anzugeben es gibt dort noch W und H*G*

Snowi 18. Okt 2004 11:53

Re: DelphiX - mehrere Sprites als Hürde
 
Width und Height hatte ich angegeben, er hat ja auch immer nen Ton erzeugt bei ner Collision (windows.beep), hab das Problem jetzt so gelöst, dass er in der DoCollision nur eine Variable auf True setzt und dann schon sozusagen im Vorraus bei DoMove überprüft, ob er noch weitergehen darf.

Danke aber für die Bemühungen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz