第一章「SDLの基本的な使い方」第八話


今回からは、画面関係の話をしていきます。
いよいよ画像も使えるようになるので、簡単なアニメーションなど作れるようになるはずです。
今日の関数はこちら。

SDL_Flip()

これは、三と四の狭間で書いた、画面上に絵が描かれた「紙」を映す作業をします。
この関数がメインループに書かれていれば、「紙」(SDL_Surface型の変数)の内容が変わったとき、
即座に絵が変わるようになります。

引数には、SDL_Surface型の変数を使用します。

#include <stdio.h> #include "SDL/SDL.h" #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") bool Init(void); //初期処理 bool Event(void); //イベント処理 void End(void); //終了処理 SDL_Surface *screen; int main(int argc, char* argv[]) { if(!Init()) //初期化&確認 { printf("初期化に失敗しました"); return 0; } while(1) //メインループ { SDL_Flip(screen); if(!Event()) //イベント確認 { break; //イベントがfalseなら、ループを抜ける } SDL_Delay(100); } End(); //終了処理へ return 0; } bool Init(void) //初期の処理はここで済ます。 { if(SDL_Init(SDL_INIT_VIDEO)<0) //SDL初期化が失敗なら { return false; } SDL_WM_SetCaption("sample",NULL); //ウィンドウの名前 screen = SDL_SetVideoMode( 640, //横幅 480, //縦幅 32, //1ピクセルに使う色ビット SDL_SWSURFACE //出力設定(メインメモリ指定) ); return true; } void End(void) //終了関数 { SDL_Quit(); } bool Event(void) //イベント関数 { SDL_Event ev; SDLKey *key; while(SDL_PollEvent(&ev)) //イベントが待機中ならば処理をする。 { switch(ev.type) //イベントの種類で分岐 { case SDL_QUIT: //終了イベントのとき(ウィンドウの閉じるボタンなどが押されたとき) { return false; break; } case SDL_KEYDOWN: //キーボードが押されたとき { key = &(ev.key.keysym.sym); if(*key==27) //キーがESCキーならば { return false; break; } } } } return true; }




〜〜第九話へ〜〜