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