#include #include ; #include #include #include void limpiar (SDL_Surface *screen); void imprimir(SDL_Surface *screen, SDL_Surface *ima, int x, int y); void mover_objeto(int *x, int *y, int ancho, int alto); int main(int argc, char *argv[]) { SDL_Surface *screen; SDL_Surface *ima; Mix_Music *cancion; SDL_Event event; int salir = 0; int x = 100; int y = 100; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) == -1) { printf("Error: %s\n", SDL_GetError()); return 1; } screen = SDL_SetVideoMode(320, 240, 16, SDL_HWSURFACE); if (screen == NULL) { printf("Error: %s\n", SDL_GetError()); return 1; } if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1) { printf("Error en Mix_OpenAudio: %s\n", Mix_GetError()); return 1; } SDL_WM_SetCaption("Ejemplo 2", NULL); ima = IMG_Load("c:/ima.png"); if (ima == NULL) { printf("Error en IMG_Load= %s\n", SDL_GetError()); return 1; } cancion = Mix_LoadMUS("c:/cancion.xm"); if (!cancion) printf("Error en Mix_LoadMUS: %s\n", Mix_GetError()); if (cancion) { if (Mix_PlayMusic(cancion, -1) == -1) printf("Error en Mix_PlayMusic: %s\n", Mix_GetError()); } while (! salir) { SDL_PollEvent(&event); if (event.type == SDL_QUIT) salir = 1; mover_objeto(&x, &y, ima->w, ima->h); limpiar(screen); imprimir(screen, ima, x, y); SDL_Flip(screen); SDL_Delay(10); } if (cancion) { Mix_HaltMusic(); Mix_FreeMusic(cancion); } Mix_CloseAudio(); SDL_Quit(); return 0; } void limpiar (SDL_Surface *screen) { Uint32 a = SDL_MapRGB(screen->format, 200, 200, 200); SDL_FillRect(screen, NULL, a); } void imprimir(SDL_Surface *screen, SDL_Surface *ima, int x, int y) { SDL_Rect rect = {x, y, 0, 0}; SDL_BlitSurface(ima, NULL, screen, &rect); } void mover_objeto(int *x, int *y, int ancho, int alto) { Uint8 *key = SDL_GetKeyState(NULL); if (key[SDLK_LEFT] && * x > 0) (*x) -= 5; if (key[SDLK_RIGHT] && (*x + ancho) < 320) (*x) += 5; if (key[SDLK_UP] && *y > 0) (*y) -= 5; if (key[SDLK_DOWN] && (*y + alto) < 240) (*y) += 5; }