!!!プロジェクト名
Tower of Defence
!!!プロジェクト説明
湧き上がる敵を仲間を召喚して倒し、
敵の領地を攻めて、自分の領地を守るゲーム。
自分の領地の体力が無くなる前に敵の領地を体力を0にすれば勝利。
!!フローチャート
<<{Screenshot_from_2015-06-12 13:52:58.png}
!!!モジュール分けとヘッダファイル
!!モジュール分け
*画面
++タイトル画面
++ステージ選択画面
++クリアー画面
++ゲームオーバー画面
*素材
++背景
++キャラクターの画像
*キャラクターの登場
++召喚ボタンの作成、コストゲージの作成
++召喚→コスト消費→キャラ登場→キャラクター移動
*キャラクターの攻撃
++相手のHPの値を減少させる(攻撃の間隔、減らせる値はキャラによって違う)
++HPが0になったら倒れる
!!ヘッダファイル
*[[anime.h | 15::gr05::anime.h2]]
*[[ivent.h | 15::gr05::ivent.h]]
*[[event.h | 15::gr05::event.h2]]
*[[gtk_lib.h | 15::gr05::gtk_lib.h2]]
*[[mob.h | 15::gr05::mob.h2]]
!!!動作スクリーンショット
!!ゲーム画面
<<{sukusyo3.jpg}
!!勝利画面
<<{sukusyo4.jpg}
!!敗北画面
<<{sukusyo5.jpg}
!!!総評
!!!個個人の感想
*古川 勝
**今期の演習のなかで最も苦労した。
授業時間外に何時間かけたか分からないくらい頑張った。
この演習を通して確実に実力がついたと思う。
最初から高望みをしないで、段階をふんでプロジェクトを進めていくことの大事さを思い知った。
1秒経つごとにloop関数内で各キャラの体力を減らす処理をしようと思ったが、最初loop関数が各キャラのtimeout30ごとに呼び出すmove関数内にあったため処理がおかしくなり大変だった。
そこで、体力を減らすloop関数をmove関数の外に出して独立させた。キャラが出現したときにloop関数を動かしておいてグローバル変数の値の変化によって体力を問題なく減らすことに成功した。当たり判定の関数であるcollision関数を敵味方で呼び出すと何故かエラーが出てしまい動かなかった。そこで、味方だけcollision関数を呼び出すようにして、味方が敵を判別して止まったら敵も同じく止まるようにした。3対3の仕様なので、キャラ1対について7通りの体力の減り方があり、プログラムが非常に大変だった。各キーボードを押して味方が出現するようにしているが、同じキャラが2体以上出現しないようにした。敵キャラについては、消えたら変則的にまた出現するようにした。これはivent.c内の、敵味方がそれぞれ存在しているかどうかの変数の値によって出現させる関数を読むようにして処理した。結局gif画像を読み込むことが出来なかった。キャラが止まった時にエラーが出たので、move関数内では動きを止め、animation関数内ではずっと画像の再描画をしてるので、そこでエラーが出ていると思う。
*稲垣 貴大
**今回プログラムは担当せず背景やキャラの絵を担当して、はじめはキャラの画像をgif形式のアニメーションで
作っていたが、統合の段階でうまく行くことができず、動かない絵となった。
それを踏まえ今回の反省点は絵を描くことだけではなく、gifアニメーションや画像へのボタンの配置などの
絵に関する表示のプログラムを担当するべきであった。
*横田 裕紀
**序盤は割と進めていくことが出来たが、統合の段階で上手く噛み合わないことも多く、グループで作品を作っていくことの難しさを実感した。
最終的な作品では、gif画像ではなくpng形式を読み込むことになってしまうなど、所々妥協してしまったと思うが、何とか完成させることができてとても嬉しい。
自分の担当したモジュールを作っていく際、プログラムに関する知識が不十分なところも見つかり、この講義を通してかなり実力が身についた。
*成田 恭平
**自分の担当分は順調に進んでいると思ったが、プログラムの重要な部分が統合でうまくいかなくてかなり苦労した。もう少し先のことを考えたりするべきだったと感じた。
また、モジュール化の重要さを身を持って感じた。最終的にできた作品は、思うようにいかなかった点など多数あったが達成感があった。