Entwickler-Ecke

Multimedia / Grafik - Scrollen mit DelphiX


Miliantrus - Do 17.10.02 15:28
Titel: Scrollen mit DelphiX
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 :roll: ) 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!


MathiasH - 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


Miliantrus - Do 17.10.02 18:20

:D 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 :D


Miliantrus - 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? :oops: 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! :D


MathiasH - 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


No - Fr 18.10.02 19:56

na ja kamera.x und y abzuziehen wäre doch etwas logischer.
Aber im Prinzip ists wurscht.


MathiasH - Fr 18.10.02 20:53

@No: das ist ja wohl klar :P , 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


Miliantrus - Fr 18.10.02 21:41

:nixweiss: 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? :angel:


Miliantrus - 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. :nut:
Ich werd noch dumm von dem zeug :autsch:


MathiasH - So 20.10.02 15:57

da geht's ganz genauso mit dem scrollen, einfache cameraX/y dazuaddieren, bei jedem "Draw"

MathiasH


Miliantrus - So 20.10.02 16:42

:dance: FREUDE FREUDE !!!! :dance2:
Es geht! Ich danke dir für deine Hilfe. :beer: Bekommst n bisschen virtuelles Bier geschenkt. Jetz werde ich das beste Spiel aller Zeiten machen :!: :D :D :D


mimi - 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 - Fr 29.11.02 16:54

mm,schade dann nicht !
weil ich würde auch genre mal so was machen ;)

MFG
mimi