#include <stdio.h>
#include <SDL.h>
void Teclado();
SDL_Surface *pantalla;
SDL_Surface *pj;
SDL_Surface *fondo;
SDL_Surface *minimapa;
SDL_Surface *pj_minimapa;
SDL_Rect pj_r;
SDL_Rect fondo_r;
SDL_Rect minimapa_r;
SDL_Rect pj_minimapa_r;
SDL_Event evento;
bool salir = false;
char titulo[]="Prueba de minimapa 01 - zeroxcol94";
int vel = 1;
int vel_x = 0;
int vel_y = 0;
const int PANTALLA_ANCHO = 800;
const int PANTALLA_ALTO = 600;
int main(int argc, char *argv[])
{
SDL_Init( SDL_INIT_VIDEO );
SDL_WM_SetCaption( titulo, NULL );
pantalla = SDL_SetVideoMode(PANTALLA_ANCHO,PANTALLA_ALTO,24,SDL_HWSURFACE);
fondo = SDL_LoadBMP("fondo.bmp");
pj = SDL_LoadBMP("pj.bmp");
minimapa = SDL_LoadBMP("minimapa.bmp");
pj_minimapa = SDL_LoadBMP("pj_minimapa.bmp");
pj_r.x = 0;
pj_r.y = 0;
pj_r.w = pj->w;
pj_r.h = pj->h;
fondo_r.x = 0;
fondo_r.y = 0;
fondo_r.w = fondo->w;
fondo_r.h = fondo->h;
minimapa_r.x = 560;
minimapa_r.y = 415;
minimapa_r.w = minimapa->w;
minimapa_r.h = minimapa->h;
pj_minimapa_r.x = 0;
pj_minimapa_r.y = 0;
pj_minimapa_r.w = pj_minimapa->w;
pj_minimapa_r.h = pj_minimapa->h;
while( salir == false )
{
while( SDL_PollEvent( &evento ) )
{
Teclado();
if( evento.type == SDL_QUIT ){ salir = true; }
if(evento.key.keysym.sym == SDLK_ESCAPE ){ salir = true;}
}
pj_r.x += vel_x;
pj_r.y += vel_y;
if(pj_r.x<0)pj_r.x=0;
if(pj_r.x+50>PANTALLA_ANCHO)pj_r.x-= vel_x;
if(pj_r.y<0)pj_r.y=0;
if(pj_r.y+50>PANTALLA_ALTO)pj_r.y-= vel_y;
//Ecuacion que transforma las coordenadas reales a las cordenadas del minimapa
pj_minimapa_r.x = (pj_r.x / float(PANTALLA_ANCHO) ) *240;
pj_minimapa_r.y = (pj_r.y / float(PANTALLA_ALTO) ) *185;
SDL_BlitSurface(fondo,NULL,pantalla,&fondo_r);
SDL_BlitSurface(pj,NULL,pantalla,&pj_r);
SDL_BlitSurface(minimapa,NULL,pantalla,&minimapa_r);
SDL_BlitSurface(pj_minimapa,NULL,minimapa,&pj_minimapa_r);
SDL_Flip(pantalla);
}
SDL_FreeSurface(fondo);
SDL_FreeSurface(minimapa);
SDL_FreeSurface(pj);
SDL_FreeSurface(pj_minimapa);
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;
}
}
}
la libreria grafica utilizada se llama SDL. Espero que me ayuden en este problemita.


