Autor |
Beitrag |
Miliantrus
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 17.10.02 15:28
Hi!
Ich bin gerade dabei, eine kleine 2D Engine zu machen. Zuerst hab ich mit der Komponente TImage angefangen. Das Erstellen der Map sah dann so aus:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.SetWorldMap; const Max=40; Breite=100; Hoehe=50; var i,j: Integer; Ebene: TBitMap; begin Spielfeld.SetBounds (0, 0, Breite*Max, Hoehe*Max); Tile := TBitMap.Create; Tile.Width := Breite; Tile.Height := Hoehe; Tile.Transparent := true; Tile.LoadFromResourceName(HInstance, 'Tile01'); for i := 0 to Max do for j := 0 to Max do begin Spielfeld.Canvas.Draw (i*Breite, j*Hoehe, Ebene); Spielfeld.Canvas.Draw (i*Breite-Breite div 2, j*Hoehe-Hoehe div 2, Tile); end; end; |
Um die Map zu scrollen, bewegt man das Image (Spielfeld) mit den Cursor Tasten, d.h. man verändert die Werte left und top. Jetzt hab ich allerdings mit DelphiX angefangen. Die Map wird auch komplett dargestellt, nur weiß ich jetz nicht, wie ich sie scrollen kann. Die Komponente TDXDraw lässt sich (denk ich mal  ) nicht nach links, rechts, rauf und runter bewegen. Jetzt würde ich gerne wissen, wie ich das scrollen mit DelphiX realisieren kann.
Ich bin für jede Hilfe dankbar!
_________________ have fun with your bytes
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Do 17.10.02 17:53
um zu scrolen speicherst du einfach cameraX, cameraY und addierst diese Werte zu jeder Positionsangabe hinzu, wenn du die werte dann veränderst wandert die Karte, wenn dir das als Hilfe nicht genügt kann ich die auch ein kleines progi geben
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Miliantrus 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 17.10.02 18:20
 Am besten wäre natürlich ein prog, da ich sehr wenig Erfahrung mit DelphiX hab. Wenn sich das machen lässt, würde ich dich verehren 
_________________ have fun with your bytes
|
|
Miliantrus 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 18.10.02 12:57
Wenn das mit dem Programm nicht geht, könntest du mir dann erklären, wo ich cameraX und cameraY speichern muss und wo ich das dann addieren muss?  Komme mir schon vor wie ein Delphi-Newbie aber mit DelphiX hab ich noch nichts gemacht. Falls mir noch jemand helfen kann, immer her mit eurem Wissen! 
_________________ have fun with your bytes
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Fr 18.10.02 17:16
also du musst einfach zwei neue Variablen deklarieren, cameraX, Y (als integer) undbei jedem aufruf einer Draw Funktion in DelphiX diese zwei Variablen dazuaddieren also so:
Quelltext 1: 2: 3: 4: 5: 6:
| procedure DrawMyObject(x, y: integer); // eigene procedure begin DXDraw1.Surface.Fill(0); DXImageList1.Items[0].Draw(DXDraw1.Surface, x + cameraX, y + CameraY, 0); DXDraw1.Flip end; |
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
No
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 18.10.02 19:56
na ja kamera.x und y abzuziehen wäre doch etwas logischer.
Aber im Prinzip ists wurscht.
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Fr 18.10.02 20:53
@No: das ist ja wohl klar  , nenn doch die Variablen, wie du willst, dann pasts und bei möglicherwiese musst du auch -x und + y rechenen, jenachdem, wie die Karte organisiert ist
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Miliantrus 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 18.10.02 21:41
 Ich hab das jetz mal probiert, aber irgendwie funzt das nicht gescheit. Wenn ich die Map scrollen lasse, sieht man nur ein Tile statt der ganzen Karte. Schließlich will ich ja die ganze Map und das was (später mal) drauf ist bewegen. Falls es keine Umstände macht, würde ich mich sehr freuen, wenn mir jemand ein kleines Beispiel prog per email schickt. Lässt sich das einrichten? 
_________________ have fun with your bytes
|
|
Miliantrus 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 20.10.02 15:17
Zuerst mal danke, dass du mir den Sourcecode geschickt hast.
Ich hab mir das angeschaut und ein bisschen rumprobiert. Wenn ich rechteckige Tiles nehme, funzt alles wie es soll. Allerdings ist dann die Isometrie weg. Das erstellen der Map hab ich aus dem Buch "3D Programmierung mit Delphi für Kids" genommen. Jetz hab ich 2 Probleme:
entweder hab ich die Map wie sie sein soll und kann sie nicht scrollen oder ich kann sie scrollen, aber dafür is da dann jedes 2te Feld schwarz.
Ich werd noch dumm von dem zeug 
_________________ have fun with your bytes
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: So 20.10.02 15:57
da geht's ganz genauso mit dem scrollen, einfache cameraX/y dazuaddieren, bei jedem "Draw"
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Miliantrus 
Hält's aus hier
Beiträge: 6
|
Verfasst: So 20.10.02 16:42
_________________ have fun with your bytes
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Sa 09.11.02 19:09
kannst du mir die engine mal senden ?
wäre nett,weil ich habe das gleich problem ich will auch scrollen,und bin auf ner suche nach einer engine
ich habe bereis erfarhung mit delphiX sihe Snake 2 und Fische versnekn unter htttp://mimi.l4k.de
währe nett wenn du mir denn qullcode von deiner engine bitte an mimi_17@web.de senden würdes
MFG
mimi
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 29.11.02 16:54
mm,schade dann nicht !
weil ich würde auch genre mal so was machen
MFG
mimi
|
|