Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Spriteengine (https://www.delphipraxis.net/11145-spriteengine.html)

braingrenade 31. Okt 2003 19:46


Spriteengine
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Leute!

Bin grad mit dem programmiren einer kleinen Sprite-engine fertig geworden(siehe Ahnhang).
Nun habe ich aber festgestellt das es zwei Probeleme gibt :

1. die kollision ist zu langsam:
Delphi-Quellcode:
function Tbitmask.collide(bitm:tbitmask): Tbmresarr;
var i,i2,i3,i4 : integer;
begin
for i := 0 to high(bm) do
 for i2 := 0 to high(bm[0]) do
  for i3 := 0 to high(bitm.bm) do
   for i4 := 0 to high(bitm.bm[0]) do
      if (bm[i,i2].x+x^ = bitm.bm[i3,i4].x + bitm.x^)
      and (bm[i,i2].y+y^ = bitm.bm[i3,i4].y + bitm.y^) then
        if (bm[i,i2].bit = true) and (bitm.bm[i3,i4].bit = true)
        then begin
          setlength(result[0],high(result[0])+2);
          result[0,high(result[0])].x := i;
          result[0,high(result[0])].y := i2;
          setlength(result[1],high(result[1])+2);
          result[1,high(result[1])].x := i3;
          result[1,high(result[1])].y := i4;
         end;
end;
Wie könnte ich das optimieren ?

und 2. Wenn ich von einem Bild die Bitmaske erstelle
Delphi-Quellcode:
procedure Tbitmask.makebm(bmppath : string;transparentcolor : Tcolor);
var i,i2 : integer;
    bmp : Tbitmap;
begin
bmp := Tbitmap.Create;
bmp.LoadFromFile(bmppath);
setlength(bm,bmp.Width,bmp.Height);
for i := 0 to bmp.Width-1 do
 for i2 := 0 to bmp.Height-1  do
   if bmp.Canvas.Pixels[i,i2] = transparentcolor then
    begin
      bm[i,i2].x := i;
      bm[i,i2].y := i2;
      bm[i,i2].bit := false;
    end else
     begin
      bm[i,i2].x := i;
      bm[i,i2].y := i2;
      bm[i,i2].bit := true;
    end;
end;
so ist die Bitmaske falsch herum , da bei opengl der Punkt 0,0 unten links ist und nich oben rechts,
weiß jemand wie ich das so machen könnte das die Bitmaske am ende auf dem Kopf steht ?

edit : vollständige Version hochgeladen

Matze 31. Okt 2003 21:41

Re: Spriteengine
 
Irgendwas mache ich falsch, ich kann das Projekt im Anhang nicht öffen, da fehlt die Hälfte glaube ich. ;)

braingrenade 31. Okt 2003 21:53

Re: Spriteengine
 
:shock: Ich hab's iregendwie geschaft die unit1.pas in nem anderen Ordner zu speicher als die projekt datei ! :mrgreen:

theomega 31. Okt 2003 22:04

Re: Spriteengine
 
Und jetzt noch die Datei aus dem vielsagenden Ordern mit dem Namen "shit" bitte ;) :) :D

braingrenade 31. Okt 2003 22:09

Re: Spriteengine
 
Liste der Anhänge anzeigen (Anzahl: 1)
:mrgreen:
hatte ich vergessen !
ist aber nicht nötig da zwei besondere Dateien zu nehmen , es reicht wenn man den pfad von zwei bitmaps angibt die man halt grad auf seiner platte hat , aber hab den ordner trotzdem mal angehängt
(nicht lachen , ich weiß das ich nicht malen kann 8))

edit : Wenns geth sollten die bmp's nene weißen hintergrund haben.

Matze 31. Okt 2003 22:18

Re: Spriteengine
 
Wie mache ich das weg, dass das Prog die Bitmask.dcu nicht auf C:\Eigene Dateien... ablegen will?

braingrenade 31. Okt 2003 22:23

Re: Spriteengine
 
Kuck mal in delphi oben in der Leiste Projekt -> optionen -> Verzeichnisse/Bedingungen
Da kann man den Pfad umstellen , das nächstemal denk ich selber dran :oops:

Matze 31. Okt 2003 22:25

Re: Spriteengine
 
Danke, jetzt kann ich's kompilieren. Erst muss ich mal die Zugriffsverletzungen wegbekommen ;)

braingrenade 31. Okt 2003 22:26

Re: Spriteengine
 
:shock: Zugriffsverletzung?

braingrenade 2. Nov 2003 16:27

Re: Spriteengine
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok , problem 1 ist beseitigt und das ganze läuft jetzt auch wunderbar flüssig!
(die neue Version hab ich geuploaded)

Aber weiterihn weiß ich nicht wie ich das zweite Problem lösen könnte !


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.
Seite 1 von 2  1 2      

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