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:
Delphi-Quelltext
1:
| Dim Spielfeld(4,4) ;Erstelle 5 Felder nach rechts und 5 Felder nach unten |
und so lese ich die Daten
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:
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
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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); var Spielfeld: array[1..10, 1..10] of 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:
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