!!! ball プロジェクト 以下は,((color red 平成24年度まで講義担当だった鈴木先生が完成させたプロジェクト))です. 今年も利用させていただいています. !! 全体像 * [[プログラム::ball::プロジェクト]] !! 開発の流れ [[GDK2013::アニメーション]]をもとに * [[ball1/|プログラム::ball::ball1]] アニメーション領域とスプライトの作成 (ライブラリ化) * [[ball2/|プログラム::ball::ball2]] スプライトとアニメーション領域の改良,異なる種類のスプライト (ball/mighty)が扱える * [[ball3/|プログラム::ball::ball3]] ballとmightyの衝突 * [[ball4/|プログラム::ball::ball4]] イベントライブラリの作成,マウスにより,ballの生成とmightyの操作ができる * [[ball5/|プログラム::ball::ball5]] 背景を一定時間毎に変える * [[ball6/|プログラム::ball::ball6]] すべてをモジュールに,[[プログラム::ball::モジュール化]] * [[ball7/|プログラム::ball::ball7]] 三つのゲームを動かす !! 実行 ball/ の取り出しとコンパイル 8< % svn export https://svn.cis.iwate-u.ac.jp/svn/csd/Examples/gtk2/Ball % cd Ball/ball1 ; make % ball_anime % ball_anime 10 600 400 >8 ball2/, ball3/, ball4/, ball5/, ball6/, ball7/ もすべて同様 * ball6/モジュール/Makefile ** .o を作る * ball6/Makefile ** main.o を作る ** モジュールの make を行う ** main.o, モジュール/モジュール.o をリンクする !! [ball7/|https://svn.cis.iwate-u.ac.jp/svn/csd/Examples/gtk2/Ball/ball7] 複数のゲームが同時に動くように,ゲーム全体をモジュールにする * キーボード・イベントのコールバック関数に (myAnimeArea *)area を渡すようになっている * 受け取ったarea から mighty を特定できるようにした[ball7/|https://svn.cis.iwate-u.ac.jp/svn/csd/Examples/gtk2/Ball/ball7/mighty/might.c] ** GHashTable 便利です。 !! [event/|https://svn.cis.iwate-u.ac.jp/svn/csd/Examples/gtk2/Ball/event] ! 見せたいこと ball_and_mightyシリーズを使ってkeypressイベントを取得する方法 * myevent/myevent.c * lib/event.c gtk_main を繰り返し呼ぶ方法 * keypressイベントで一旦gtk_mainを抜けて, * 再度gtk_mainを呼び出す ! [event/myevent|https://svn.cis.iwate-u.ac.jp/svn/csd/Examples/gtk2/Ball/event/myevent] myevent/myevent.c <- ball6/(main.c+ball_and_mighty/ball_and_mighty.c) * ウィンドウとアニメ領域を作成し, * ウィンドウに対するキープレスイベントにより, * 背景を切り替え, * 一旦 gtk_main を終え, 繰り返す