さまざまな言語に対応するゲームプラットフォーム「Simple DirectMedia Layer」
スペースインベーダー似のゲームで巡るSDLの世界
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 }
この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Victor Volkman(Victor Volkman)
1980年代末から『C/C++ Users Journal』などのプログラミング雑誌に記事を執筆。ミシガン工科大学を卒業し、WashtenawコミュニティカレッジCIS学部の諮問委員会のメンバーを務める。『C/C++ Treasure Chest』など数々の書籍の編集者であり、Loving Healing Pressのオーナーでもある。オープンソースのツールやライブラリについての相談、お問い合わせはsysop@HAL9K.comまで。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
