#include "SDL/SDL.h" #define TRUE 1 #define FALSE 0 const int WINDOW_WIDTH = 640; const int WINDOW_HEIGHT = 480; const char* WINDOW_TITLE = "SDL Start"; void drawSprite(SDL_Surface* imageSurface, SDL_Surface* screenSurface, int srcX, int srcY, int dstX, int dstY, int width, int height); int main(int argc, char **argv) { SDL_Init( SDL_INIT_VIDEO ); SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0, SDL_HWSURFACE | SDL_DOUBLEBUF ); SDL_WM_SetCaption( WINDOW_TITLE, 0 ); SDL_Surface* bitmap = SDL_LoadBMP("bat.bmp"); SDL_SetColorKey( bitmap, SDL_SRCCOLORKEY, SDL_MapRGB(bitmap->format, 255, 0, 255) ); int batImageX = 24; int batImageY = 63; int batWidth = 65; int batHeight = 44; //bat pos int batX = 100; int batY = 100; SDL_Event event; int gameRunning = TRUE; int keysHeld[323] = {FALSE}; while (gameRunning == TRUE) { // Handle input if (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { gameRunning = FALSE; } if (event.type == SDL_KEYDOWN) { keysHeld[event.key.keysym.sym] = TRUE; } if (event.type == SDL_KEYUP) { keysHeld[event.key.keysym.sym] = FALSE; } } if ( keysHeld[SDLK_ESCAPE] ) { gameRunning = FALSE; } if (keysHeld[SDLK_LEFT] ) { batX -= 1; } if (keysHeld[SDLK_RIGHT] ) { batX += 1; } if (keysHeld[SDLK_UP]) { batY -= 1; } if (keysHeld[SDLK_DOWN]) { batY += 1; } // Draw scene SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); drawSprite(bitmap, screen, batImageX, batImageY, batX, batY, batWidth, batHeight); SDL_Flip(screen); } SDL_FreeSurface(bitmap); SDL_Quit(); return 0; } void drawSprite(SDL_Surface* imageSurface, SDL_Surface* screenSurface, int srcX, int srcY, int dstX, int dstY, int width, int height) { SDL_Rect srcRect; srcRect.x = srcX; srcRect.y = srcY; srcRect.w = width; srcRect.h = height; SDL_Rect dstRect; dstRect.x = dstX; dstRect.y = dstY; dstRect.w = width; dstRect.h = height; SDL_BlitSurface(imageSurface, &srcRect, screenSurface, &dstRect); }