main()関数
当然ながら、実際のアクションは次に示すmain()関数から始まります。
524行目では、SDL_Init()を使用してオーディオとビデオのサブシステムを初期化します。他に使用できるオプションとしては、ジョイスティック、タイマー、CD-ROMアクセスを有効にするものや、イベントマネージャを独立したスレッドとして実行するためのものがあります。
531行目では、Mix_OpenAudio()を呼び出すことでSDL_Mixerマネージャの使用を開始します。この例では、古い低速のCPUを考慮して低品質のオーディオ(11Khz、8ビット符号なしサンプル、モノラル、512バイトバッファ)を使用しています。
次に、SDL_SetVideoMode()を呼び出すことで、デバイスに合った適切なbpsを使用して640×480ディスプレイ用にビデオを開きます。このとき、システムメモリバッファを使用し、全画面表示(ウィンドウを画面全体に表示するモード)にするよう指定しています。この他に使用できるオプションとしては、ダブルバッファリング(アニメーションを滑らかにします)、OpenGLコンテキスト、サイズ変更可能ウィンドウ、非同期再描画などがあります。
521 main(int argc, char *argv[]) 522 { 523 /* Initialize the SDL library */ 524 if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { 525 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); 526 exit(2); 527 } 528 atexit(SDL_Quit); 529 530 /* Open the audio device */ 531 if ( Mix_OpenAudio(11025, AUDIO_U8, 1, 512) < 0 ) { 532 fprintf(stderr, 533 "Warning: Couldn't set 11025 Hz 8-bit audio\n- Reason: %s\n", 534 SDL_GetError()); 535 } 536 537 /* Open the display device */ 538 screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE|SDL_FULLSCREEN); 539 if ( screen == NULL ) { 540 fprintf(stderr, "Couldn't set 640x480 video mode: %s\n", 541 SDL_GetError()); 542 exit(2); 543 } 544 545 /* Initialize the random number generator */ 546 srand(time(NULL)); 547 548 /* Load the music and artwork */ 549 if ( LoadData() ) { 550 /* Run the game */ 551 RunGame(); 552 553 /* Free the music and artwork */ 554 FreeData(); 555 } 556 557 /* Quit */ 558 Mix_CloseAudio(); 559 exit(0); 560 }
