ソフトウェア設計及び演習2017

プログラム::ball::モジュール分けと階層化

モジュール分けと階層化

ball_layers.png

ライブラリ

モノと操作を実現するために, 直接 GTK, GDKを使ってプログラムするのでは, 抽象度が低く,考えにくく,間違えやすいので, アニメーションとイベントを提供する層を作成する.

  • ボールたちはスプライト
  • ペンギンは時間で変化する背景画像
  • 背景画像でのマウスとキーボードイベント

(参考) ball::アニメーションのライブラリ化

アニメーション

一定時間毎に,背景描画,スプライト描画を行う

アニメーション領域データ構造

  • 描画領域
  • 背景画像
  • 中にいるスプライト達
  • イベント
  • タイムアウト関数
  • ライブラリを変更することなく,
  • ライブラリを使う側で関数を用意できるように

アニメーション領域API

  • アニメーション領域の作成
  • 背景画像を設定する
  • アニメーション領域の消去

スプライト

一定時間毎に背景の上を動く

スプライトのデータ構造

  • のっているアニメーション領域
  • 画像,大きさ,位置,向き,速さ
  • タイムアウト関数

スプライトAPI

  • 新しく生まれる
  • 動く
  • 消去

マイイベント

アニメーション領域で起こるマウスとキーボードイベントを取得し, ユーザ指定プログラムを呼び出す仕組みを提供する.

マイイベントのデータ構造

  • マウス移動イベントと処理関数へのポインタ
  • マウスボタンイベントと処理関数へのポインタ
  • キーボードイベントと処理関数へのポインタ

マイイベントのAPI

  • 新しいマイイベントを作る
  • アニメーション領域にマイイベントを設定する


最終更新日:2017/04/03 09:14:17