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