Code:
int random[10]  = { 0, 50, 100, 150, 200, 250, 300, 400, 410, 125};
There's a function called random() that is reasonably widespread. I'm not sure exactly which standard it's part of, if any; probably POSIX or GNU-specific. But anyway, you might not want to have a global array by the same name.

You seem to be doing this often enough to warrant a function for it.
Code:
SDL_Surface *image_temp = IMG_Load("image.png");
if(!image_temp) {
    printf("Unable to load image: %s\n", SDL_GetError());
    return false;
}

SDL_Surface *image = SDL_DisplayFormat(image_temp);

SDL_FreeSurface(image_temp);
I'd also suggest printing messages to stderr -- perhaps with cerr, since you seem to be using C++; or fprintf(stderr, ...) if you want to stick with C functions.

Code:
// From start():
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
                                           SDL_HWSURFACE|SDL_DOUBLEBUF);
// From init():
    screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
Perhaps you want to combine those; as you're using SDL_Flip() which implies SDL_DOUBLEBUF, I'd go with
Code:
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,
                                            SDL_HWSURFACE|SDL_DOUBLEBUF);