Ich würde das ganze ähnlich wie Medium beschrieben hat angehen, nur anstatt der speziellen Liste einfach ein Zweidimensionales Array nehmen, etwa so:
level: array of array of TFeldElement;
Ein Objekt des Typs FeldElement (oder wahlweise statt Klasse ein Record nehmen) beinhaltet, dann die einzelnen Eigenschaften
Hier mal mit einem Record:
Delphi-Quellcode:
TFeldElement = record
teleporterXPos, teleporterYPos: integer;//speichert, wo hingesprungen werden soll
inhalt: byte;//begehbar, nicht begehbar oder Teleporter
textur: string;//den Namen der Textur
end;
Zeichnen würde ich dann irgendwie so:
Delphi-Quellcode:
for i := 0 to high(level) do
for k := 0 to high(level[0]) do
case level[i,k].inhalt of
1: ..... //begehbares Feld an der Position (i * Breite eines Feldes + xLevel/ k * Breite eines Feldes + yLevel)
...
end;
xLevel und yLevel sind dann die Koordinaten des Levels.
Wenn du deine Figur bewegts, muss du dann beispielsweise beim nach unten gehen folgendes machen:
Delphi-Quellcode:
figur.yPos := figur.yPos + 25;//der Spieler wird nach unten verschoben
yLevel := yLevel - 25; //das Level wird nach oben verschoben
Insgesamt hat sich nun also deine Karte nach oben gescrollt und deine Figur ist immer noch in der Mitte des Bildschirms