Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Do 24.04.08 15:02 
Hallo,
ich möchte gerne einen Tileeditor in Delphi schreiben, also für 2D Maps.
Ich habe in BlitzBasic ein Spiel geschrieben und möchte dafür einen Leveleditor schreiben, in BlitzBasic ist das für mich kein problem, aber in Delphi wäre das viel besser und übersichtlicher.

Also in BlitzBasic erstelle ich so ein 2 Dimensionales Array:
ausblenden Delphi-Quelltext
1:
Dim Spielfeld(4,4) ;Erstelle 5 Felder nach rechts und 5 Felder nach unten					


und so lese ich die Daten
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Restore map_data
For y=0 To 4
  For x=0 To 4
    Read Spielfeld(x,y)
  Next
Next


so zeichne ich dann die Map:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
For y=0 To 4
  For x=0 To 4
    ;Pos x * Bildbreite, Pos y * Bildhoehe, Frames Zahl des bildes die von map_data gelesen wurde
    DrawImage x*32,y*32,Spielfeld(x,y)
  Next
Next


Danach kann ich von den einzelbilder die frames zahl in der Data eingeben
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
.map_data
Data 1,5,0,2,1
Data 4,3,6,4,0
Data 4,2,7,3,1
Data 9,2,4,3,5
Data 1,2,5,4,1


wie könnte ich das in Delphi machen, gibt es vieleicht Tutorials um eine Tileengine in Delphi zu Coden?

[EDIT] ich habe jetzt erstmal die Arrays so erstellt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var
  Spielfeld: array[1..101..10of Byte;
begin
  Spielfeld[1,1] := 10;
end;


[EDIT] Ich habe nun einen PaintBox für die darstellung der Map benutzt, so lasse ich pro 32 Pixel ein feld dazuzählen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  MX := Mouse.CursorPos.X - PaintBox1.Left - Form1.Left - 4;
  MY := Mouse.CursorPos.Y - PaintBox1.Top - Form1.Top - 30;

  FeldX := MX div 32;
  FeldY := MY div 32;
  Label1.Caption := 'Feld X: '+IntToStr(FeldX);
  Label2.Caption := 'Feld Y: '+IntToStr(FeldY);
end;


Wenn ich jetzt z.B. mit der Maus auf ein feld klicke, wie kann ich dann an dieser Position ein Teilstück von mein Bild dort zeichnen?

Ich bedanke mich schonmal für die Hilfe.

MfG