117 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#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);
 | 
						|
}
 |