昨日ちょっといじったので備忘録

【SDLとは】

Simple DirectMedia Layerの略。おいおい、それならSDMLじゃないの? と思うのは俺だけじゃないはず。

いわゆるメディア関連のライブラリ群。コレ使えば音楽、動画などが簡単に扱えるし、ジョイパッドとかのライブラリも入ってるからゲームなんかも作れる。


なんでいきなりこんなの使おうかと思ったかというと、自分GUI部分のプログラミングがべらぼうに下手なのでまぁ妥協してこんなもん使っとけばいいや。と思ったわけ。

ちなみにSDLみたいなGUI関連をサポートしているライブラリとしてDXライブラリSELENEなんてものもある。ただしこちらの二つはDirectXを利用するためWindowsでしか使えない。Ubuntu使いの俺としてはアウト。
ということで必然的にマルチプラットフォーム対応のSDLをやってみよう。そうなった次第であります。


とりあえず導入からHelloWorldまでやりました。技術的な話は続きから。
まずは必要なものを揃えます。と言ってもaptで揃うからそんなめんどくさくはない
$ sudo aptitude install libsdl1.2-dev

コレだけ。簡単簡単。

そしたらテケトーにプログラム打ち込む

sdltest1.c
#include <stdlib.h>
#include <SDL/SDL.h>

int main(int argc, char *argv[]){

  SDL_Surface *gScreenSurface;
  SDL_Event ev;

  // 初期化
  if(SDL_Init(SDL_INIT_VIDEO)){
    printf("初期化に失敗したっぽい\n");
    return 1;
  }

  // ウィンドウのタイトルとアイコン(→キャプション)を設定
  SDL_WM_SetCaption("HELLO SDL!", NULL);

  // ウィンドウの初期化
  gScreenSurface = SDL_SetVideoMode(300,200,24,SDL_SWSURFACE);

  // 終了イベント待ち
  while(1){
    SDL_PollEvent(&ev);
    if(ev.type == SDL_QUIT) break;
  }

  SDL_Quit();

  return 0;
}

コンパイル

$ gcc sdltest.c -lSDL

当たり前だけど最後のSDLライブラリを入れるのをお忘れなく。でないとコンパイルエラーでるんで。

実行

$ ./a.out

タイトルバーに「Hello SDL!」と表示された黒い画面が表示されるだけ。
あとは[x]なりAlt+F4なり押せば普通に終了します。
まぁ最初はこのくらいでしょう。

VisualStudioとか使えればGUI部の作成も簡単なんだろうけど、自分そういうのやったことなくて、どうしても全部コーディングしたくなってしまうんでこういうライブラリがあると大変助かる。

もっと複雑なものを作りたかったらOSのAPI使ったほうがいいんだろうけど、別にそんな難しい物を作るつもりは特にないからこのくらいが使えれば問題ないだろう。

コレでマトモなツールが作れるようになりそうだ。部屋の片隅でホコリをかぶっていたMindSetもようやく使われる時が来たようだ。