EVENT プログラミングのスタイル 手続き型: ある決められた場所から開始され, その後は純粋に上から下に流れて行く方式. 実行したいことを, 順番に記述してゆく. 逐次処理形式コーディングの方法である。 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32やmake 手続き型
EVENT プログラミングのスタイル イベント駆動型(イベントドリブン) 処理はイベント毎に分割して記述され, 必要に応じて呼びだされ, 処理される方式 Windows上のアプリケーション(TeraPadやその他のソフト) イベントドリブン
EVENT イベント 外部からの入力アクション ”キーボードが押された” ”マウスが移動した” など OSからのメッセージ など ”マウスが移動した” など OSからのメッセージ など アプリケーションに対するEvent(出来事)のこと SDLではユーザーがアプリケーションに対して行う入力を イベントとして扱 う
EVENT SDLでイベントは SDL_Event という共用体(一種の構造体)を使って扱う
EVENT アプリケーションに対する全てのイベントは、 イベントキューという過去にどんなイベントが発生したかを 記録する配列に収められる。 ※先にイベントキューに入ったイベントからアプリケーションに渡される。 マウスが動いた マウス右 Aのキー Cのキー Aのキーが押された ESC SDLアプリケーション イベントキュー
int SDL_PollEvent (SDL_Event *event); 待ち行列の中のイベントの内容を取り出して処理する関数 int SDL_PollEvent (SDL_Event *event); 現在留まっているイベントを取り出し、 イベントがある時は 1 を、 ないときは 0 を返します。 event が NULL でない場合は、 次のイベントをキューから取り出して、eventに格納します。
EVENT SDL_Event イベントを扱う型。 各種イベントに対応したメンバ変数をもつ共用体。 メンバ変数 type イベントの型を扱う キーが押されたイベント SDL_KEYDOWN マウスの移動イベント SDL_MOUSEMOTION マウスのボタンイベント SDL_MOUSEBUTTONDOWN
EVENT SDL_Event イベントを扱う型。 各種イベントに対応したメンバ変数をもつ共用体。 メンバ変数 key.keysym.sym どのキーが押されたかを扱う SDLK_ESCAPE ESCキー SDLK_RETURN リターンキー など
EVENT SDL_Event イベントを扱う型。 各種イベントに対応したメンバ変数をもつ共用体。 メンバ変数 motion.x 、motion.y マウスの位置がわかる button.button マウスのどのボタンが押されているか など
EVENT 例 while(SDL_PollEvent(&e)){ //Eventをチェック if (e.type == SDL_KEYDOWN ){ //もしキーイベントならチェックする switch(e.key.keysym.sym){ case SDLK_ESCAPE: //もしESCキーが押されたなら終了 done=1; break; default: break; } } else if (e.type == SDL_MOUSEMOTION ){ //もしmouseの移動ならチェックする Printf("マウスの位置 x,y = %d, %f\n",e.motion.x,e.motion.y); } //他の仕事 }