Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [DelphiX] Sprites (https://www.delphipraxis.net/72662-%5Bdelphix%5D-sprites.html)

igel457 6. Jul 2006 14:39

Re: [DelphiX] Sprites
 
Sieht für mich auf jeden fall richtig aus...

Was geht denn genau nicht? Wie willst du denn das ganze Zeichenen? Wie sieht diese Routine aus?

3_of_8 6. Jul 2006 14:40

Re: [DelphiX] Sprites
 
Delphi-Quellcode:
DXDraw1.Fill(0);
Map.Draw(DXDraw1.Surface, Tiles);
DXDraw1.Flip;

igel457 6. Jul 2006 14:43

Re: [DelphiX] Sprites
 
Ja... Was ist Map? Wie sieht da die impelementierung aus?

3_of_8 6. Jul 2006 15:12

Re: [DelphiX] Sprites
 
Delphi-Quellcode:
unit Map;

interface

uses SysUtils, Classes, DXDraws, Tiles, Dialogs;

type
  TMapField=Byte;

  TMapFields=array of array of TMapField;

  TMap=class
  protected
    FFields: TMapFields;
    FWidth, FHeight: Cardinal;
    function GetField(I, J: Cardinal): TMapField;
    procedure SetField(I, J: Cardinal; Value: TMapField);
    procedure SetWidth(Value: Cardinal);
    procedure SetHeight(Value: Cardinal);
  public
    procedure Clear;
    procedure Draw(Surface: TDirectDrawSurface; Tiles: TTiles);
    procedure LoadFromFile(FileName: string);
    procedure SaveToFile(FileName: string);
    property Width: Cardinal read FWidth write SetWidth default 0;
    property Height: Cardinal read FHeight write SetHeight default 0;
    property Fields[I, J: Cardinal]: TMapField
    read GetField write SetField; default;
  end;

implementation

procedure TMap.Clear;
var I, J: Cardinal;
begin
  for I:=0 to FWidth-1 do
    for J:=0 to FHeight-1 do
      FFields[I, J]:=0;
end;

function TMap.GetField(I, J: Cardinal): TMapField;
begin
  Result:=FFields[I, J];
end;

procedure TMap.SetField(I, J: Cardinal; Value: TMapField);
begin
  FFields[I, J]:=Value;
end;

procedure TMap.SetWidth(Value: Cardinal);
begin
  FWidth:=Value;
  setlength(FFields, FWidth, FHeight);
end;

procedure TMap.SetHeight(Value: Cardinal);
begin
  FHeight:=Value;
  setlength(FFields, FWidth, FHeight);
end;

procedure TMap.Draw(Surface: TDirectDrawSurface; Tiles: TTiles);
var I, J: Cardinal;
begin
  for I:=0 to FWidth-1 do
    for J:=0 to FHeight-1 do
    begin
      Tiles[FFields[I, J]].
        Draw(Surface, I*Tiles.tilewidth, J*Tiles.tileheight, 0);
    end;
end;

procedure TMap.LoadFromFile(FileName: string);
var fs: TFileStream;
begin
  fs:=TFileStream.Create(FileName, fmOpenRead);
  fs.Read(FWidth, SizeOf(Cardinal));
  fs.Read(FHeight, SizeOf(Cardinal));
  SetLength(FFields, FWidth, FHeight);
  fs.Read(FFields[0, 0], FWidth*FHeight*sizeof(TMapField));
  fs.free;
end;

procedure TMap.SaveToFile(FileName: string);
var fs: TFileStream;
begin
  fs:=TFileStream.Create(FileName, fmOpenWrite);
  fs.Write(FWidth, SizeOf(Cardinal));
  fs.Write(FHeight, SizeOf(Cardinal));
  fs.Write(FFields[0, 0], FWidth*FHeight*sizeof(TMapField));
  fs.free;
end;

end.

igel457 6. Jul 2006 15:38

Re: [DelphiX] Sprites
 
Welche Version von DelphiX hast du? Das neuste UnDelphiX 1.07a? (Steht in der Unit DXDraws.pas irgendwo oben...).

Probiere außerdem mal noch in TTile imglist.initialize(DXDraw);

3_of_8 6. Jul 2006 16:45

Re: [DelphiX] Sprites
 
99.08.29? Steht jedenfalls in der Setup.inf.

Ich hab keine Ahnung, wo ich sonst nachschauen soll.

inherited 6. Jul 2006 17:36

Re: [DelphiX] Sprites
 
nene, is wirklich bereits verknüpft, so dumm sind a net :P
Also ich zumindest hab die neuste, da gehts auch nicht.

3_of_8 6. Jul 2006 17:38

Re: [DelphiX] Sprites
 
WTF?
Wasdasfürsatz?

inherited 6. Jul 2006 18:10

Re: [DelphiX] Sprites
 
das mit verknüpft bezog sich auf das mit der imagelist und dem DXDraw


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 4 von 4   « Erste     234   

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 by Thomas Breitkreuz