- Código: Seleccionar todo
//LIBRERIAS
#include <stdio.h>
#include <SDL.h>
void TECLADO();
//SUPERFICIES
SDL_Surface *PANTALLA;
SDL_Surface *FONDO;
SDL_Surface *PJ;
//EVENTOS
SDL_Event EVENTO;
//RECTANGULOS
SDL_Rect FONDO_R;
SDL_Rect PJ_R;
//VARIABLES GLOBALES
bool SALIR = false;
char TITULO[]="PRUEBA DE OPTIMIZACION #1";
int VEL = 3;
int VEL_X = 0;
int VEL_Y = 0;
const int PJ_ALTO = 50;
const int PJ_ANCHO = 50;
int main(int argc, char *argv[])
{
SDL_Init( SDL_INIT_VIDEO );
SDL_WM_SetCaption( TITULO, NULL );
PANTALLA = SDL_SetVideoMode(640,480,24,SDL_SWSURFACE| SDL_DOUBLEBUF);
FONDO = SDL_LoadBMP("fondo.bmp");
PJ = SDL_LoadBMP("pj.bmp");
//UBICACION DEL PJ
PJ_R.x = 0;
PJ_R.y = 0;
PJ_R.w = PJ_ALTO;
PJ_R.h = PJ_ANCHO;
//UBICACION DEL FONDO
FONDO_R.x = PJ_R.x;
FONDO_R.y = PJ_R.y;
FONDO_R.w = FONDO->w;
FONDO_R.h = FONDO->h;
while( SALIR == false )
{
while( SDL_PollEvent( &EVENTO ) )
{
//EVENTOS DEL TECLADO
TECLADO();
if( EVENTO.type == SDL_QUIT ){ SALIR = true; }
if(EVENTO.key.keysym.sym == SDLK_ESCAPE ){ SALIR = true;}
}//FIN WHILE #2
PJ_R.x += VEL_X;
PJ_R.y += VEL_Y;
if(PJ_R.x<0)PJ_R.x=0;
if(PJ_R.x+50>640)PJ_R.x-= VEL_X;
if(PJ_R.y<0)PJ_R.y=0;
if(PJ_R.y+50>480)PJ_R.y-= VEL_Y;
SDL_BlitSurface(FONDO,NULL,PANTALLA,&FONDO_R);
SDL_BlitSurface(PJ,NULL,PANTALLA,&PJ_R);
SDL_Flip(PANTALLA);
}//FIN WHILE #1
SDL_FreeSurface(FONDO);
SDL_FreeSurface(PJ);
SDL_Quit ();
return 0;
}
/*****************************/
void TECLADO(){
if( EVENTO.type == SDL_KEYDOWN )
{
switch( EVENTO.key.keysym.sym )
{
case SDLK_UP: VEL_Y -= VEL; break;
case SDLK_DOWN: VEL_Y += VEL; break;
case SDLK_LEFT: VEL_X -= VEL; break;
case SDLK_RIGHT: VEL_X += VEL; break;
}
}
else if( EVENTO.type == SDL_KEYUP )
{
switch( EVENTO.key.keysym.sym )
{
case SDLK_UP: VEL_Y += VEL; break;
case SDLK_DOWN: VEL_Y -= VEL; break;
case SDLK_LEFT: VEL_X += VEL; break;
case SDLK_RIGHT: VEL_X -= VEL; break;
}
}
}