Ich würde ein zweidimensionales Array von ausreichener Größe nehmen (beispielsweise 100 Spielfelder) in dem die Felddaten gespeichert werden. Zusätzlich brauchst du Variablen um den sichtbaren Bereich festzuhalten, z.B. ein Rect (wobei die Koordinaten des Rechtecks nicht in Pixeln sondern in deinen Feldergrößen gemessen werden sollen, Rect(2,4,10,12) wäre also von Feld 2/4 bis Feld 10/12). Die Raumschiffposition speicherst du ebenfalls in absoluten Koordinaten des gesamten Spielbereiches, nicht nur im sichtbaren Bereich. Jedesmal wenn das Raumschiff nun über den Bereich des Rects hinausgeht, verschiebst du das Rect entsprechend.
Die Zeichenroutine legst du so aus, daß sie immer die linke obere Ecke des Rects links oben auf den Bildschirm positioniert, ansonsten kümmert sie sich um nichts, was die eigentliche Positionsermittlung angeht. Sie zeichnet also blind einfach den Inhalt des Rects.
Edit: @Sharky: das Ganze ist angelehnt an
diesen Thread