2017 ソフトウェア設計及び演習用の班Wiki

17::gr05::吉川和杜

4/14 シミュレーションを作るということだけ決定。 
4/21 簡易企画書作り
4/28 ものと操作の洗い出し
5/12 ものと操作の洗い出し
5/19 モジュール化、担当の分担(スタート画面)、とりあえず作ってみる 
5/26 モジュール化、実際の担当決定(建築、ゲーム画面)
6/2 プロトタイププログラミング 
6/9 プロトタイププログラミング
6/16 中間発表
6/23 画像の複数描画
6/30 画像配置場所調整、重複阻止、ターン終了にダイアログを使ってみる
7/7 関数の簡略化、コールバック関数に渡せる変数がひとつしかないため、画像を動かしながらの配置は難しそう
7/14 いろんな画像の評価
7/21 背景の変更、及びそれに伴う調整
7/28 統合
8/4 発表

  • 開発の推移
    • ウィンドウ表示、イメージ通りのGUIにするため、テーブルを使ってみる。
    • イメージ通りにいかないため、パッキングボックスと併用。
    • 建物の選択にスクロールバー付きウィンドウを使用。
    • スクロールバー付きウィンドウ内に、画像とボタンが並列になるように入れる。
    • 建築するマップの表示。ドローイングエリアで作ってみる。
    • ステータス、日付表示のためのテキストの表示。gtk_text_new、GString*、g_string_newとか試してみるが、失敗。
    • とりあえず後回しにしてレイアウトを完成させる。
    • テキストビューウィジェットを使って成功する。ただし不格好。
    • ボタンをクリックして建物を表示させるようにする。ドローイングエリアに背景のマップをすでに入れており、どうにもうまく行かない。
    • 自力で試行錯誤したが、画像一枚表示させるので精一杯。
    • 結局ballプロジェクトを参考にして複数枚の表示に成功する。
    • 表示した画像をマウスに追従するようにしてみたが、その状態で二枚目を表示させると、同時に表示はされるが、ドローイングエリア上にマウスを動かすと、二枚目が消える。(ちなみに、時間が経つとどんどん重くなっていく。)
    • クリックした場所に建物を建築(画像をその場に表示させる)うまい方法が思いつかない。
    • 最終手段として、大量のif文分岐とグローバル変数を使用。
    • 同じ場所に建築できないようにしたい。
    • やっぱりグローバル変数を使用。配列を作ってその値で判定する。
    • ターン終了と建物の解体にダイアログを使う。
    • yesをクリックして終了するのはいいが、noをクリックしてもダイアログを消せない。
    • gtk_signal_connect_object を使用。これでボタンをクリックした際に、destroyシグナルを送ってウィンドウを破棄できる。
    • ターン終了は少し手間取ったものの完成。
    • 建築、解体は一応できたが、解体した後、建物が存在する判定を消せない。
    • コールバック関数は変数を一つしか渡せない。配列で渡そうとしたが、失敗した。構造体も失敗。
    • グローバル変数で無理やり解決。いくつもの関数を渡る変数は、グローバル変数にしないと厳しいかも。
    • ここまででballプロジェクトのanimeを少し改造した。
    • 具体的には、スプライトを動かさないように初期ベクトルを0に。同様にcb_sprite_timeoutをなくす。初期座標はmy_sprite_new関数の引数として取得させる。
    • テキストをラベルで表示してみたが、背景と同化して見づらい。
    • どうしてもコールバック関数の引数に構造体が使えない。 「ポインタに変換できない」らしい。
    • 建物のデータを登録しようとしたが、上記理由でダメ。
    • やはりグローバル変数で解決。ボタンをクリックした際、画像の文字列で種類を判定し、データを登録。
    • 建物の種類増加。大きさが違う建物を判定するため、決死のif文大攻勢に出る。
    • 建物重複阻止の判定用の配列に、建物の大きさごとに違う数値を入れ、数値の違いによってクリックした場所を判定。解体の際には、自動的に画像データの入った配列を特定し、該当する広さの配列を0に。
    • マップの端っこでも大きさ2以上の建物を建てられてしまうのを修正。if文で。
    • 今までずっとやりたかったマウスポインタのポイント補助画像を追加。
    • 建物のステータス変動追加
    • パラメータ反映
    • 解体時にパラメータを減らせない
    • 建物保持の各変数に8を掛けた建物番号+大きさを入れることで、8で割ったあまりで変数確定、画像消去の判定+各建物の判定処理ができるように
    • 残金処理追加(資金が足りない時に建てられないように)
    • ステータス、ターン終了処理、イベント遷移
    • 建物選択時にマウスを追従するように
      透過建物画像の追従は統合時に間に合いませんでした。
  • スタート画面
    • タイトル
      • テキスト「がん大メーカー」 もしくは画像
    • START
      • ゲーム画面(OPイベント)に遷移
    • LOAD
      • セーブデータロード、ゲーム画面に遷移
    • EXIT
      • 終了
  • ゲーム画面 形だけ 16*11になってます ##2017-06-14 Screenshot from 2017-06-14 13:09:18.png
  • 感想
    • 今回私は建築画面のモジュールを担当しました。開発を初めて痛感したのは、ものと操作の洗い出しの不足です。モジュール内で決まっていないものや処理も多く、他のモジュールに影響しないものなら問題ありませんでしたが、共通するパラメータなどは、データを作ってくれた班長には悪いですが、必要なパラメータが足りないということもあり、ここが統合時に問題になりました。また、効果音だったりアニメーションだったり、もう少しいろいろ追加すれば、もう少しゲームっぽくはなったかと思います。テキスト表示も、ラベルだと背景と同化するのでテキストビューウィジェットを使いましたが、もっと見やすい方法があったと思います。
      開発を進めていく中で、画面のレイアウト、テキストの表示、土地画面(ドローイングエリア)など、いろいろなことに苦労しましたが、特にドローイングエリアについては、結局自力では作り切れず、Ballプロジェクトを利用させてもらいました。そんなわけで、完全に自力というわけではありませんが、あまり他の人の手を煩わせることなく、極力自力でやって来ました。グループ開発ということを考えると、あまり良い開発経過ではなく、反省点もいろいろとあり、いろいろと勉強になった演習でした。


最終更新日:2017/08/08 16:40:57