SDLでHelloWorld

日記つけるの久しぶりだ。



今回からはSDLの簡単な使い方を紹介していきます。



ウィンドウ表示から始まって、簡単なゲームを完成させるまでは続けていきたいですね。



まずは真っ黒なウィンドを表示するプログラムです。



キーを押すことによりアプリケーションを終了させます。

#include <SDL/SDL.h>

#pragma comment(lib,"SDL.lib")
#pragma comment(lib,"SDLmain.lib")

#define WIDTH 320  //横幅
#define HEIGHT 240 //高さ
#define BPP 32     //1ピクセルのビット数

#define FLG_INIT    (SDL_INIT_VIDEO)

static SDL_Surface *screen; //ビデオポインタ

bool init(void);    //初期化
void run(void);        //メイン処理
void quit(void);    //終了処理

int main(int argc, char *argv[])
{
    bool flg;
    
    flg = init();
    
    if( flg )run();
    
    quit();
    
    return 0;
}

bool init(void)
{
    //    ライブラリを初期化する
    if(SDL_Init(FLG_INIT) < 0) {
        printf("初期化に失敗");
        return false;
    }

    //    ビデオモードを設定する
    screen = SDL_SetVideoMode(WIDTH,HEIGHT,
                        BPP, SDL_SWSURFACE );
    
    if( screen == NULL) {
        printf("VideoInitialize Error");
        return false;
    }
    
    return true;
}

void run(void)
{
    SDL_Event ev;
    
    //    次のイベントが来るまで無限に待機
    while( SDL_WaitEvent(&ev) ) {
        switch(ev.type){
        case SDL_QUIT:        //ウィンドウの×ボタン
            printf("QUIT\n");
            return;
        case SDL_KEYDOWN:    //キーダウン
            printf("KeyDonw\n");
            return;
        case SDL_MOUSEBUTTONDOWN://マウスダウン
            printf("MouseDown\n");
            return;
        default:break;        //それ以外のイベントは無視する
        }
    }
}

void quit(void)
{
    if(screen != NULL)
    {
        SDL_FreeSurface( screen );
    }
    SDL_Quit();
}

SDLの良いところは、C言語初心者でもAPI等の使い方に戸惑うことなくコーディングできるところにあると思います。

アプリケーションのエントリポイントがint main()から始まるのも好感が持てますね。



今回のプログラムでは「ウィンドウの×ボタン」、「キーを押下」、「マウスボタン押下」

することにより、アプリケーションを終了させることが出来ます。

またWindowプログラムなのにprintf()を使っているのは、後々デバッグをしやすくするためです。



コンソール上でアプリを走らせている場合、アプリケーションを終了したときにコンソール上にメッセージが表示されます。

コンソールから立ち上げていない場合は、生成されたバイナリのあるディレクトリにprintf.txtなるテキストファイルが生成されています。



VC++を使っている場合、プロジェクトの設定でコンソールからウィンドウを立ち上げることも出来ます。



VC++のコンソールからアプリを走らせる場合の設定

プロジェクト→構成プロパティ→リンカ→システム→サブシステム

コンソール (/SUBSYSTEM:CONSOLE)をWindows (/SUBSYSTEM:WINDOWS)としてください。

参考にさせてもらいました → http://d.hatena.ne.jp/tattyu/20080926