Advertisement
Guest User

Tastebin - Tkabber Plugin

a guest
Nov 21st, 2011
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1. #include "SDL.h"
  2.  
  3. #define SCREEN_WIDTH  640
  4. #define SCREEN_HEIGHT 480
  5. #define SPRITE_SIZE    32
  6.  
  7. int main(int argc, char* argv[])
  8. {
  9.     SDL_Surface *screen, *temp, *sprite, *grass;
  10.     SDL_Rect rcSprite, rcGrass;
  11.     SDL_Event event;
  12.     Uint8 *keystate;
  13.     int colorkey, gameover;
  14.  
  15.     /* initialize video system */
  16.     SDL_Init(SDL_INIT_VIDEO);
  17.  
  18.     /* set the title bar */
  19.     SDL_WM_SetCaption("SDL Move", "SDL Move");
  20.  
  21.     /* create window */
  22.     screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
  23.  
  24.     /* load sprite */
  25.     temp   = SDL_LoadBMP("sprite.bmp");
  26.     sprite = SDL_DisplayFormat(temp);
  27.     SDL_FreeSurface(temp);
  28.  
  29.     /* setup sprite colorkey and turn on RLE */
  30.     colorkey = SDL_MapRGB(screen->format, 255, 0, 255);
  31.     SDL_SetColorKey(sprite, SDL_SRCCOLORKEY | SDL_RLEACCEL, colorkey);
  32.  
  33.     /* load grass */
  34.     temp  = SDL_LoadBMP("grass.bmp");
  35.     grass = SDL_DisplayFormat(temp);
  36.     SDL_FreeSurface(temp);
  37.  
  38.     /* set sprite position */
  39.     rcSprite.x = 0;
  40.     rcSprite.y = 0;
  41.  
  42.     gameover = 0;
  43.  
  44.     /* message pump */
  45.     while (!gameover)
  46.     {
  47.         /* look for an event */
  48.         if (SDL_PollEvent(&event)) {
  49.             /* an event was found */
  50.             switch (event.type) {
  51.                 /* close button clicked */
  52.                 case SDL_QUIT:
  53.                     gameover = 1;
  54.                     break;
  55.  
  56.                 /* handle the keyboard */
  57.                 case SDL_KEYDOWN:
  58.                     switch (event.key.keysym.sym) {
  59.                         case SDLK_ESCAPE:
  60.                         case SDLK_q:
  61.                             gameover = 1;
  62.                             break;
  63.                     }
  64.                     break;
  65.             }
  66.         }
  67.  
  68.         /* handle sprite movement */
  69.         keystate = SDL_GetKeyState(NULL);
  70.  
  71.         if (keystate[SDLK_LEFT] ) {
  72.             rcSprite.x -= 2;
  73.         }
  74.         if (keystate[SDLK_RIGHT] ) {
  75.             rcSprite.x += 2;
  76.         }
  77.         if (keystate[SDLK_UP] ) {
  78.             rcSprite.y -= 2;
  79.         }
  80.         if (keystate[SDLK_DOWN] ) {
  81.             rcSprite.y += 2;
  82.         }
  83.  
  84.         /* collide with edges of screen */
  85.         if ( rcSprite.x < 0 ) {
  86.             rcSprite.x = 0;
  87.         }
  88.         else if ( rcSprite.x > SCREEN_WIDTH-SPRITE_SIZE ) {
  89.             rcSprite.x = SCREEN_WIDTH-SPRITE_SIZE;
  90.         }
  91.         if ( rcSprite.y < 0 ) {
  92.             rcSprite.y = 0;
  93.         }
  94.         else if ( rcSprite.y > SCREEN_HEIGHT-SPRITE_SIZE ) {
  95.             rcSprite.y = SCREEN_HEIGHT-SPRITE_SIZE;
  96.         }
  97.  
  98.         /* draw the grass */
  99.         for (int x = 0; x < SCREEN_WIDTH/SPRITE_SIZE; x++) {
  100.             for (int y = 0; y < SCREEN_HEIGHT/SPRITE_SIZE; y++) {
  101.                 rcGrass.x = x * SPRITE_SIZE;
  102.                 rcGrass.y = y * SPRITE_SIZE;
  103.                 SDL_BlitSurface(grass, NULL, screen, &rcGrass);
  104.             }
  105.         }
  106.  
  107.         /* draw the sprite */
  108.         SDL_BlitSurface(sprite, NULL, screen, &rcSprite);
  109.  
  110.         /* update the screen */
  111.         SDL_UpdateRect(screen,0,0,0,0);
  112.     }
  113.  
  114.     /* clean up */
  115.     SDL_FreeSurface(sprite);
  116.     SDL_FreeSurface(grass);
  117.     SDL_Quit();
  118.  
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement