#include "SDL/SDL.h" //Write a function that moves an image based on which arrow keys are pressed. //something like //void move_image(direction, image); int main ( int argc, char *argv[] ) { /* initialize SDL */ if (SDL_Init(SDL_INIT_VIDEO) != 0){ printf("Unable to init SDL!: %s\n", SDL_GetError()); return 1; } /* set the title bar */ SDL_WM_SetCaption("SDL Test", "SDL Test"); /* init surfaces */ SDL_Surface* screen; SDL_Surface* temp; SDL_Surface* bg; SDL_Surface* top_image; SDL_Rect src, dest; /* create window of size 640x480 in hi-color (16-bit) mode*/ screen = SDL_SetVideoMode(640, 480, 16, 0); if (screen == NULL){ printf("Unable to set video mode: %s\n", SDL_GetError()); return 1; } atexit(SDL_Quit); /* load bitmap to temp surface */ temp = SDL_LoadBMP("sdl_logo.bmp"); if (temp == NULL){ printf("Unable to find image!!: %s\n", SDL_GetError()); return 1; } /* convert bitmap to display format */ bg = SDL_DisplayFormat(temp); if (bg == NULL){ printf("Unable to format image!: %s\n", SDL_GetError()); } /* free the temp surface * What we are doing above, with temp is simply * making everything easier to deal with * then freeing the extra memory space. * i.e: We could have just as easily done * SDL_DisplayFormat(SDL_LoadBMP("sdl_logo.bmp"));*/ SDL_FreeSurface(temp); /* load top_image image to practice blit on top of surface*/ temp = SDL_LoadBMP("dinowheel.bmp"); if (temp == NULL){ printf("Unable to load top_image: %s/n", SDL_GetError()); return 1; } top_image = SDL_DisplayFormat(temp); if (top_image == NULL){ printf("Unable to format top_image: %s/n", SDL_GetError()); return 1; } SDL_FreeSurface(temp); src.x = 0; src.y = 0; src.w = top_image->w; /* copy entire image */ src.h = top_image->h; /* Could also do "dest = src" if they were to start at the same spot */ dest.x = 25; dest.y = 25; dest.w = top_image->w; dest.h = top_image->h; SDL_Event event; int gameover = 0; /* message pump */ while (!gameover) { /* look for an event */ if (SDL_PollEvent(&event)) { /* an event was found */ switch (event.type) { /* close button clicked */ case SDL_QUIT: gameover = 1; break; /* handle the keyboard */ case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_q: gameover = 1; break; case SDLK_w: printf("You just pressed 'w'\n"); break; } break; } } /* draw the background */ SDL_BlitSurface(bg, NULL, screen, NULL); /* Blit top_image to the screen */ SDL_BlitSurface(top_image, &src, screen, &dest); /* update the screen */ SDL_UpdateRect(screen, 0, 0, 0, 0); } /* free the background surface */ SDL_FreeSurface(bg); /* free top_image */ SDL_FreeSurface(top_image); /* cleanup SDL */ SDL_Quit(); return 0; }