For your tiles, you could stop hard coding, use an image manager, and have relative file names for each tile. for instance.
In Your Map File:
1 2 3
|
<0,0,"resources\\brick.png",1(),0,0><0,1,"resources\\resources\\brick.png",1(),0,0>
//x,y,file,collision layer,movability,special flag
//movability has additional optional params scrolling position and direction
|
Then have your image manager use a map with pointers to images and when you reference a file name that hasn't been used yet, make a new image and load it from memory.
As far as scrolling goes. It's horrifically easy. What I did was make a map class that holds all of my sprites on a certain layer, and it has the ability to check collisions, notify objects of collisions, and move it's own camera offset. Since it displays all of my sprites, it has the ability to offset every single sprite by (-xpos,-ypos)
My favorite new feature of my new game engine is my "scene" class, it holds a map of objects, and it grabs input from the user, and objects can register for any event from the operating system, then respond based on however they've overloaded their receiveevent() method. It's amazing for my button class, and great for my player class. I'm going to add events from objects, so that other objects can respond to events from other objects =]