100 likes | 195 Views
EVENT. プログラミングのスタイル. 手続き型: ある決められた場所から開始され , その後は純粋に上から下に流れて行く方式 . 実行したいことを , 順番に記述してゆく . 逐次処理形式コーディングの方法である。. 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32 や make. 手続き型. EVENT. プログラミングのスタイル. イベント駆動型(イベントドリブン) 処理はイベント毎に分割して記述され , 必要に応じて呼びだされ , 処理される方式
E N D
EVENT プログラミングのスタイル 手続き型:ある決められた場所から開始され, その後は純粋に上から下に流れて行く方式. 実行したいことを, 順番に記述してゆく.逐次処理形式コーディングの方法である。 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32やmake 手続き型
EVENT プログラミングのスタイル イベント駆動型(イベントドリブン)処理はイベント毎に分割して記述され, 必要に応じて呼びだされ, 処理される方式 Windows上のアプリケーション(TeraPadやその他のソフト) イベントドリブン
EVENT • イベント • 外部からの入力アクション • ”キーボードが押された” • ”マウスが移動した” など • OSからのメッセージ など • アプリケーションに対するEvent(出来事)のこと SDLではユーザーがアプリケーションに対して行う入力を イベントとして扱 う
EVENT SDLでイベントは SDL_Event という共用体(一種の構造体)を使って扱う
EVENT アプリケーションに対する全てのイベントは、 イベントキューという過去にどんなイベントが発生したかを 記録する配列に収められる。 ※先にイベントキューに入ったイベントからアプリケーションに渡される。 マウスが動いた マウス右 Aのキー Cのキー Aのキーが押された ESC SDLアプリケーション イベントキュー
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); } //他の仕事 }