quelques commentaire a la volée:
if (event.key.keysym.sym==SDLK_ESCAPE)
return 0;
Il faut liberer la memoire en fin de programme.
SDL_Rect Rect (int x, int y, int w=0, int h=0)
cette fonction est tres peu performante, en effet elle entraine une creation et une recopie de trop.
SDL_Rect rand_shoot()
pourquoi utiliser un SDL_Rect si tu ne compte utilise que les champs x et y ? Prefere l´utilisation d´une structure "Point2D"
else if (vram=1|pb==1)//si on met l´image en ram
C´est bien fait expres ca ? vram=1 et pas vram==1 ?
probalement qu´il y a une erreur puisque tu rajoute
if (vram==1)
deux lignes plus tard.
Quel etait ton message d´erreur exacte ?
compiles tu bien en -W -Wall -pedantic ?