2016-11-07 21:26:44 -07:00

137 lines
2.9 KiB
C

#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;
}