Beispiel:
Die Karte ist jetzt erstmal nur ein Bild (manche machen das mit gesamten Bild, andere blitten jedes Teil für sich).
Dann legst du bspw. ein SDL_Rect in die untere linke Ecke.
Das würde dann so aussehen:
SDL_Rect rect = {0, SCREEN_HEIGHT, VIEW_WIDTH, VIEW_HEIGHT};
Die Konstanten sollten selbsterklärend sein, aber da ich gerade viel Zeit habe (muss eig. lernen):
SCREEN_HEIGHT: Die Gesamtgröße deines Fensters als y Koordinate, VIEW_* die Ausmaße des Karten Bereichs, der jeweils sichtbar sein soll.
Wenn du es nun wie bspw. bei Pokémon handhaben willst (oder wie generell viele), dass dein Charakter, oder mit was auch immer du die Karte erkunden willst, immer in der Mitte des sichtbaren Ausschnitts bleiben soll, kannst du dessen Schrittweite vom letzten zu diesem Frame einfach auf das rect auf addieren, so wird der Sichtbarkeitsbereich jeweils mit dem Spieler/Cursor/was weiß ich verschoben.
Mit Schrittweite meine ich die Differenz seiner Position im letzten Frame zu seiner Position im aktuellen Frame.
Deine Karte bzw den aktuellen View blittest du dann via SDL_BlitSurface(src, &rect, dest, NULL);
edit: Und bevor Nacho wieder rum propagiert: nimm ansonsten die SFML. Da stellt das Modul View eine etwaige Kamera dar, wie du sie suchst.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -