Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX kollision und bewegung mit TObjectList (https://www.delphipraxis.net/48107-delphix-kollision-und-bewegung-mit-tobjectlist.html)

dustinthewind55 20. Jun 2005 21:46


DelphiX kollision und bewegung mit TObjectList
 
:hi: Hallo leuts,

ich bin grad dabei ein kleines 2d spiel mit hilfe von delphiX zu schreiben.
Nun zu meinen problem:
der player soll in der mitte stehen bleiben und die objekte sollen sich bewegen. bis dahin kein
problem aber wenn ich nun die kollisionskontrolle einbauen will habe ich das probem dass im falle
einer kollision nur das objekt mit dem ich kollidiere stehen bleibt (wegen vererbung)

dann bin ich auf die idee gekommen die bewegung sowie die kollisionskontrolle in meine player move
procedure reinzupacken und die bewegung über eine Tobjectlist mit ner schleife zu machen. die
gegenstände wollen sich nur blöder weise keinen mm bewegen.

Delphi-Quellcode:
var gegen: TObjectList

 Procedure TPlayer.DoMove(MoveCount: Integer);
var i: Integer;
Begin
  Inherited domove(movecount);

  If isup in form1.dxinput1.states
  Then
  Begin
    for i:=0 to gegen.Count-1 do
     TGegenstand(gegen[i]).Y:=TGegenstand(gegen[i]).Y+1;
   if collision>0 then //falls der player mit mehr als nix kollidiert ;)
     for i:=0 to gegen.Count-1 do
       TGegenstand(gegen[i]).Y:=TGegenstand(gegen[i]).Y-1;
  end;

  If isdown in form1.dxinput1.states
  Then
  Begin
     for i:=0 to gegen.Count-1 do
      TGegenstand(gegen[i]).Y:=TGegenstand(gegen[i]).Y-1;
    if collision>0 then
     for i:=0 to gegen.Count-1 do
       TGegenstand(gegen[i]).Y:=TGegenstand(gegen[i]).Y+1;
  end;

  If isleft in form1.dxinput1.states
  Then
  Begin
    for i:=0 to gegen.Count-1 do
     TGegenstand(gegen[i]).X:=TGegenstand(gegen[i]).x+1;
   if collision>0 then
     for i:=0 to gegen.Count-1 do
       TGegenstand(gegen[i]).X:=TGegenstand(gegen[i]).x-1;
  end;

  If isright in form1.dxinput1.states
  Then
  Begin
    for i:=0 to gegen.Count-1 do
     TGegenstand(gegen[i]).X:=TGegenstand(gegen[i]).x-1;
   if collision>0 then
     for i:=0 to gegen.Count-1 do
       TGegenstand(gegen[i]).X:=TGegenstand(gegen[i]).x+1;
  end;
end;
wär echt kewl wenn mir jemand helfen könnt. vielen dank im voraus.
greetz dustin :hi:

dustinthewind55 21. Jun 2005 13:36

Re: DelphiX kollision und bewegung mit TObjectList
 
bitte bitte bitte is echt hammer wichtig.
ich komm einfach net drauf. delphi bringt auch keine fehlermeldung und nix. es tut sich einfach nix. hab auch noch nie mit TObjectList gearbeitet. kann man da nur lesend auf die objecte zugreifen oder wie?
bitte helft mir

*push*

dustinthewind55 21. Jun 2005 15:21

Re: DelphiX kollision und bewegung mit TObjectList
 
oki hab jetzt selber geschafft: einfach ein array nehmen. :wall:

Delphi-Quellcode:

gegen: array of Tgegenstand;

If isLeft in main.Form1.DXInput1.States then
  begin
   for i:=0 to high(gegen) do
    gegen[i].X:=gegen[i].X+2;
   if collision>0 then
     for i:=0 to high(gegen) do
       gegen[i].X:=gegen[i].X-2;
   end;
thx an alle die sichs angeschaut und drüber nach gedacht haben

:hi:


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