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

15::gr09::長嶺 一志

感想

 当初作ろうとしていたものそのものまで作りきれなかったことは非常に残念に思った。
ただ、悩み苦しんで問題やバグを解決することは、自身の成長に大きく貢献した。
またグループ開発をする機会があれば、今度はもう少し時間をかけて、今回の反省点を生かして挑戦したい。次はもっとうまく、スムーズに、楽しくできるように思う
仕方ないとわかっていても、旅行(ディズニーランド)に行った班長はずるいと思った

活動記録

来週 スタートを30じゃなくて0にする
7/3 dice.hにおいて人生初の挫折を思い知る もうダメかもしれない
7/10 前回三時間近く悩んだエラーを10分で解決。気分転換は大事だと思った。
7/13 dice.cの改良に苦しむ。サイコロモジュールを(終わった人がやる)にしたのは大きな過ちだと思った。
7/20 構造体を他のモジュールから引っ張ってもらうにはどうしたらいいのかわからず悩む
 TAさんに教えてもらったが、一人では到底出来なかったと思う。感謝しかありません。
7/27 他のモジュールを手伝う。前回までに知識で解決でき、成長を感じた。
7/31 色んなモジュールからセーブデータを作ってくれといわれ、色んなセーブデータを作っているうちにセーブの王として覚醒した
エラーが起きないことをいいことに構造体を量産したことは反省点
8/7 班wikiの編集作業を行った

8/8 延長戦
ゲームとしてギリギリのラインまではできたのでここからできるだけ理想に近づける
 無限に増えるウインドウを改善

8/9 イベントモジュールをリニューアル(各イベントマスで各イベント関数を呼び出す)、とにかく(寝る)時間がない
・イベントマスを踏まなければ非常にスムーズに動くところまで改善
・イベントマスも最初の2つぐらいまでは正常に作動
・返り値が100のはずが28になる謎のバグがなおらない(これがやばい)

残りの課題

・上のバグをなおす→(8/9)70%の確率でこのバグが発生しなくなった。理由は不明。
・各イベントを実装する(今は全部同じ)→ (8/9)完了
・キャラクター選択の時に選んだキャラクターをセーブ(毎回make cleanすればできてる気もする)→(8/9)完了
・ゴール、ゲームオーバーの表示→(8/9)ゲームオーバーは完了
ゴール作りを夜やる(8/10)解決
・キャラ性能表記→所持金はなし
・1.テニスボールをキャラ絵に(8/10)解決
・所持金関係全般(妥協か)→なし
・所持金によるガチャ(出来れば)→なし

8/10 所持金イベントを除くすべてのキャラ、イベントを実装し、所持金イベントに関しては別のイベントを代用した
ゴール画面の実装
発表の時キャラ7か9を引けないときついです
とりあえず帰ります

発表

お疲れ様でした
早めに7番を引けてよかったです

save.c(プレイヤーモジュール) 所持金の保存→どうやら使わない

プレイヤーの持つお金を記録しておくプログラム
当たり前だけどお金はint型になってます
35行目にある「save_data.money」が持ってる金額を表しています

・実行方法
gcc save.c -o save
./save

今は他のモジュールから金額を持ってこられないので実行するたびにランダムで-49~99のお金を獲得、保存するようにになっています(7/31 統合のためこの機能はなくなりました)

save_chara_2.c(プレイヤーモジュール) ガチャ結果をセーブ、キャラモジュールに渡す


プレイヤーがガチャで獲得したキャラ(に割り振られたint型の数字)を保存するプログラム
構造体(motteru[i])に8体まで記録できるようになっています
ちなみに9体目を引くとボックスが空になります。限りあるボックスでやりくりして下さい。

・実行方法
gcc save_chara_2.c -o save chara_2
./save_chara_2

save.cと同様に、今は実行するたび記録されていくようになります(7/31 ガチャモジュールから引っ張ってこれるよう変更しました)

実行するとき ./save_chara_2 reset とすると構造体(キャラクターボックス?)が空(全部ゼロ)になります

dice.c(サイコロモジュール) サイコロの実装、自分のいる場所の保存(使わない?)

サイコロの出目の決定、自分がいるマスのint型のデータを関数化し、dice.hから持ってこれるように変更。統合できると嬉しいなあ

自分の位置を記録できるように変更。ヘッダファイルの実装のためその部分も変更しました。
サイコロを実現するプログラム
実行するとサイコロが回る?ウィンドウが出てきて、「ストップ」を押すとサイコロの回転?が止まり、何の目であるかを表示します

実行方法
gcc dice.c -o dice `pkg-config gtk+-2.0 --libs --cflags`
./dice サイコロ.gif

画像ファイルを指定の位置に入れておいてください

eventn.c(画面表示、イベントモジュール) イベントの発生、キャラ得能の実装

(8/9更新) 改良版イベントモジュール
通過する時にもイベントが発生したりしないように、countが0の時だけ各イベントの関数が呼び出され、countを返すことでそのぶんmasu_lib.cでキャラが動けるようにした
また、キャラモジュールで、キャラ選択した時の各if文の中に、選んだキャラをセーブできるプログラムを追加し、そのキャラをロードすることで、キャラの能力を実現できるようにした
即死イベントは、ゲームオーバー画像を出したかったが、どうしてもサイコロの方のウインドウにゲームオーバー画像が出てしまうため、ターミナルの方に「ゲームオーバー」と表示し、ゲームが強制終了するようにした。
それっぽく言っているがsegmetionfaultで終わっている

実行方法とかはまあもう書くまでもなかろう
  

キャラ性能



1
能力なし
2
戻るイベントが進むイベントに変わる
3
戻るイベントが進むイベントに変わり、三マス増える
4
イベント5でゴールまで飛ぶ
5
振り出しに戻らない
6
とにかく死ぬ
7
イベントマスを踏めばゴールかスタートに行く(二強)

8
ゲームオーバー回避 死なない
9
死なない
戻るイベントが進むイベントに変わり三マス増える
振り出しに戻らない
(二強)

まとめ


サイコロの出目 → func()
自分のいるマス → nowplace()
所持金のセーブ → m_save(獲得金)
所持キャラクターのロード → c_load()
所持金のロード → m_load()

いるマス?をゲームモジュールがやりやすいようにセーブ → p_save()
そのマスの位置をロード → p_load()

nowplace()とは何だったのだろう


最終更新日:2015/08/10 12:18:35