Advertisement
thecplusplusguy

SDL tutorial 12

Jun 22nd, 2012
2,466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.28 KB | None | 0 0
  1. //http://www.youtube.com/user/thecplusplusguy
  2. //Thanks for the typed in code to Tapit85
  3. //you need tempmusic.wav tempmusic1.wav tempmusic2.wav file in the same folder
  4. #include <SDL/SDL.h>
  5. #include <SDL/SDL_mixer.h>
  6.  
  7. int main(int argc, char** argv)
  8. {
  9.     SDL_Init(SDL_INIT_EVERYTHING);
  10.     SDL_Surface *screen;
  11.     Mix_Chunk* effect1;
  12.     Mix_Chunk* effect2;
  13.     Mix_Music* music;
  14.     Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,4096);
  15.     music = Mix_LoadMUS("tempmusic.wav");
  16.     effect1 = Mix_LoadWAV("tempsound1.wav");
  17.     effect2 = Mix_LoadWAV("tempsound2.wav");
  18.     Mix_PlayMusic(music, -1);
  19.     screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
  20.     bool running = true;
  21.     const int FPS = 30;
  22.     Uint32 start;
  23.     bool b[4] = {0,0,0,0};
  24.     SDL_Rect rect;
  25.     rect.x = 10;
  26.     rect.y = 10;
  27.     rect.w = 20;
  28.     rect.h = 20;
  29.     Uint32 color2 = SDL_MapRGB(screen->format, 0xff,0xff,0xff);
  30.     Uint32 color = SDL_MapRGB(screen->format, 0,0,0);
  31.     while(running) {
  32.         start = SDL_GetTicks();
  33.         SDL_Event event;
  34.         while(SDL_PollEvent(&event)) {
  35.             switch(event.type) {
  36.                 case SDL_QUIT:
  37.                     running = false;
  38.                     break;
  39.                 case SDL_KEYDOWN:
  40.                     switch(event.key.keysym.sym) {
  41.                         case SDLK_UP:
  42.                             b[0] = 1;
  43.                             break;
  44.                         case SDLK_LEFT:
  45.                             b[1] = 1;
  46.                             break;
  47.                         case SDLK_DOWN:
  48.                             b[2] = 1;
  49.                             break;
  50.                         case SDLK_RIGHT:
  51.                             b[3] = 1;
  52.                             break;
  53.                         case SDLK_1:
  54.                             Mix_PlayChannel(-1,effect1,0);
  55.                             break;
  56.                         case SDLK_2:
  57.                             Mix_PlayChannel(-1,effect2,0);
  58.                             break;
  59.                     }
  60.                     break;
  61.                 case SDL_KEYUP:
  62.                     switch(event.key.keysym.sym) {
  63.                         case SDLK_UP:
  64.                             b[0] = 0;
  65.                             break;
  66.                         case SDLK_LEFT:
  67.                             b[1] = 0;
  68.                             break;
  69.                         case SDLK_DOWN:
  70.                             b[2] = 0;
  71.                             break;
  72.                         case SDLK_RIGHT:
  73.                             b[3] = 0;
  74.                             break;
  75.                    
  76.                     }
  77.                     break;
  78.             }
  79.         }
  80.  
  81.         SDL_FillRect(screen, &rect, color);
  82.  
  83.         //logic
  84.         if(b[0])
  85.             rect.y--;
  86.         if(b[1])
  87.             rect.x--;
  88.         if(b[2])
  89.             rect.y++;
  90.         if(b[3])
  91.             rect.x++;
  92.  
  93.         //render
  94.         SDL_FillRect(screen, &rect, color2);
  95.         SDL_Flip(screen);
  96.  
  97.         if(1000/FPS > SDL_GetTicks()-start) {
  98.             SDL_Delay(1000/FPS-(SDL_GetTicks()-start));
  99.         }
  100.     }
  101.     Mix_FreeChunk(effect1);
  102.     Mix_FreeChunk(effect2);
  103.     Mix_FreeMusic(music);
  104.     Mix_CloseAudio();
  105.     SDL_Quit();
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement