07/07/2006, 15:33
|
| | Fecha de Ingreso: abril-2006 Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses Puntos: 2 | |
Tienes la idea y los conocimientos, como que te falta estilo, jeje.
no en realidad hay unos pequeños errores, y faltan algunos detalles de SDL.
te dejo el codigo a mi estilo, jeje, nunca escribo por los demas solo les oriento pero hoy practique un poco con tu aplicacion y pues te dejo el resultados:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <SDL/SDL.h>
void Mover(int* x, int* y)
{
Uint8* keystate = SDL_GetKeyState(NULL);
if(keystate[SDLK_LEFT]) --*x;
if(keystate[SDLK_RIGHT]) ++*x;
if(keystate[SDLK_UP]) --*y;
if(keystate[SDLK_DOWN]) ++*y;
}
void Cargar(SDL_Surface* screen, int* x, int* y)
{
SDL_Rect dest;
SDL_Surface* image = SDL_LoadBMP("imagen.bmp");
dest.x=*x;
dest.y=*y;
dest.w=image->w;
dest.h=image->h;
SDL_BlitSurface(image,NULL,screen,&dest);
SDL_FreeSurface(image);
}
int main(int argc, char *argv[])
{
SDL_Surface *screen;
SDL_Event event;
int done = 0;
int x = 0;
int y = 0;
int background;
SDL_Rect r;
if(SDL_Init(SDL_INIT_VIDEO)<0)
{
printf("NO SE PUEDE INICIAR MODO DE VIDEO %s\n",SDL_GetError());
exit(-1);
}
atexit(SDL_Quit);
screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_DOUB LEBUF);
if(screen==NULL)
{
printf("NO SE PUEDE GENERAR PANTALLA %s\n",SDL_GetError());
exit(1);
}
r.x = 0;
r.y = 0;
r.w = screen->w;
r.h = screen->h;
background = SDL_MapRGB(screen->format, 0,0,0);
do
{
if(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE: done = 1; break;
default:
done = 0;
};
break;
case SDL_QUIT:
done = 1;
break;
}
}
SDL_FillRect(screen, &r, background);
Mover(&x, &y);
Cargar(screen, &x, &y);
SDL_Flip(screen);
}while(!done);
return 0;
} |