SDL_SetColorKey(perso[4],SDL_SRCCOLORKEY , SDL_MapRGBA(perso[4]->format,255,255,255,0));
( si c´est du blanc pur, c´est 255,255,255)
il faut faire ça pour chacune de stes images ( fait un for pour éviter les copier/coller)
pour que ton perso ne sorte pas, a toi de lui interdire de sortir
genre au lieu de faire :
if(event.key.keysym.sym == SDLK_UP)
{
rect1.y-=1;
sens_deplacement=1;
}
tu fais :
if(event.key.keysym.sym == SDLK_UP)
{
if ( rect1.y>0)
{
rect1.y-=1;
}
sens_deplacement=1;
}
et pareil pour les autres directions 
en gros, ça veut dire :
" si tu appuies sur haut, et que ton bonhomme n´est pas sur le bord haut, alors monte"
dans tous les cas comme tu vois, meme si tu ne peux pas monter, le sens_deplacement=1 est appliqué : pour que ton gars regarde quand meme en haut !
mais si tu ne veux pas, tu peux tres bien inserer ça dans l´autre if. ( et en ce cas, tu peux rassembler les if avec un &&)
enfin C toi qui controle 