SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

さまざまな言語に対応するゲームプラットフォーム「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 }

次のページ
RunGame()関数

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Victor Volkman(Victor Volkman)

1980年代末から『C/C++ Users Journal』などのプログラミング雑誌に記事を執筆。ミシガン工科大学を卒業し、WashtenawコミュニティカレッジCIS学部の諮問委員会のメンバーを務める。『C/C++ Treasure Chest』など数々の書籍の編集者であり、Loving Healing Pressのオーナーでもある。オープンソースのツールやライブラリについての相談、お問い合わせはsysop@HAL9K.comまで。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2524 2008/06/05 00:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー