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

18::gr10::岡野稀央隆

盤面・得点・プレイヤーターン表示モジュール、モジュール進行、メモリ管理担当

  • start→set_trap→game→end→startまで完成! (7/28現在)
  • 全体で使う変数

Screenshot from 2018-08-02 17-12-21.png

4月20日

  • 企画書の作成をし、紙に記入した。

4月27日

5月11日

5月18日

  • モジュール作成担当決め、紙に記入した。
  • 担当モジュールは表示とメモリ管理になった。

5月25日

  • 担当モジュールの表示モジュールの作成にとりかかる

6月1日

  • 盤面の表示モジュールの完成。オセロの画像データはHTMLで読み込む。

6月8日

  • 得点の表示の完成。盤面の表示モジュールとの統合に成功。
  • HTML 画像
  • javascript 画像

6月15日

  • 裏返り判定の完成。前回の表示モジュールとの統合を試みたが、黒しか置けない、得点が変わらないなど問題点が出たので、次回解決したい。
  • コールバック関数onclickを用いて、cellをクリックした時showBoard();が呼び出されるようにした。(コールバック関数とは指定された操作を行った時に、呼び出される関数。cell.onclickはcellがクリックされた時に呼び出される。)
  • cell.onclickが登録される条件を作り、どこでもクリックできる今の状態ではなく、置けるマスのみクリックできるようにしたい。

Screenshot from 2018-07-19 18-15-48.png

6月22日

  • 表示モジュールと通信モジュールとの統合を試みたがうまく行かなかった。まずは通信モジュールより、オセロ自体の機能を完成させるようにした。

6月29日

  • 置ける場所判定モジュールとひっくり返しモジュールと統合したが、ひっくり返らない場所があったり、置けるはずなのに置けない場所があったりなどバグがあった。

Screenshot from 2018-07-19 18-20-15.png

7月6日

  • ゲーム全体の進行のためのmain関数に当たるもの(ゲームモジュール)を作成している。
  • 前回のバグが表示モジュールにおける盤面の状態を格納する変数boardと実際に表示されているマスの縦横が入れ替わっていることによることが判明。boardの縦と横(xとy)を入れ替え修正したところ、改善することができた。
  • また、置くことのできるマスの色を変えることでわかりやすくゲーム進行できるようにすることに成功。

Screenshot from 2018-07-19 18-22-38.png

7月13日

  • ゲームモジュールの完成。ゲームを最後まですすめることができた。
  • パス時にはpassのalert,終了時にはendのalertを出す。

Screenshot from 2018-07-19 18-35-25.png

  • ゲームモジュールがHTMLとjavascriptで書き進めており、enchant.jsを使用していないので、enchant.jsを使用しているスタートモジュールとエンドモジュール、通信モジュールとの統合が複雑になってしまうかもしれない。確認不足です、ごめんなさい。
  • 通信モジュールに関してはsceneを使用せずにwebsocketでデータを受信側に送ることでHTMLとjavascriptのみで通信できるのではないかと考えた。次回実行する。
  • スタートモジュール,エンドモジュールに関しては、シーン移動に条件をつけてタイミングを調整し、ゲームモジュールと別々で動かせば行けそう。

7月20日

  • ゲームモジュールと通信モジュールの統合をスタート。
  • ゲームモジュールとスタートモジュールの統合をスタート。

7月25日

  • スタートモジュールをゲームモジュールに統合することが成功。
  • 各モジュールが今まで一つのファイルに一緒になっていたが、別々のファイルに分けて見やすくした。

7月27日

  • スタートモジュールとエンドモジュールを完成させた。
  • エンドモジュールは表示させるところまで行ったが、スタート画面への遷移がうまく行かなかったので次回修正したい。
  • トラップモジュールとゲームモジュールの統合に成功。
  • トラップモジュールを適応させるためにトラップモジュール自体と表示モジュールを少し変更した。

Screenshot from 2018-08-02 17-12-46.png

7月28日

  • スタート画面とエンド画面の遷移のブラッシュアップを行った。
  • 画面をクリックする次のモジュールへ移動する。
  • モジュールをさらに分割化して、得点表示がずっと表示されたり、ターン表示がずっと表示されたりするバグを修正した。
  • 新しく作った関数end()はエンド画面を表示し、クリックでstart()を呼び出す。
  • 得点が試合結果と対応しないバグを修正した。
  • 残りは通信を組み込むのみの状態にした。

8月1日

  • トラップが置いてあるマスがPLACEABLEになったりならなかったりするバグを修正。
  • マスの色を変更し、立体感を出した。渋い。

Screenshot from 2018-08-01 18-48-15.png

8月2日

  • 音楽をつけてみた。
  • 発表ページを更新した。
  • 通信との統合を試みた。
  • 発表ページの全体の流れを作成した。

8月3日

  • トラップモジュールの最終調整を行った。
  • 通信との統合を試みた。
  • 全体の最終調整、発表ページの最終調整を行った。

全体を通しての感想

うまく行ったこと
  • 統合をやっていくうちにデバッグのスキルが上がっていき非常に身になる経験だった。
  • 班WIKIを定期的に更新し、自分の状況を発信できていてよかった。
  • 実際組み込んでいくうちに、表示モジュール自体を変更しなければいけない時も多々あり、そうすると他のモジュールとの統合の際うまく行かないなど、慎重なデバックが必要だったので、集中して取り組んだ。
  • メモリ管理と、全体の進行自体も担当したので、ゲーム全体の流れを把握でき、表示モジュールを制作する際に役立ったので担当の相性がかなり良かった。
うまく行かなかったこと
  • 自分のモジュールが全体の中枢となっていたこともあり、他モジュールとの統合の際、自分に合わせてもらう形になることも多くあったので、もっとモジュールを分割化し、それぞれが独立した形で作成できたらよかったなと反省している。
  • すべての統合に関わるということは、表示モジュール自体のバグをまず無くし、かつどう動作するかを正確に伝えなければならずそこが難しかった。
  • 表示モジュールというほぼすべてのモジュールと関連のあるモジュールを担当したため、すべての統合に関わったのでかなり大変だった。オセロのルール設定に近い条件付けも一から作成したので、当初は単純なゲームだしサクサク作成できるだろうと思っていたが、実際は一つ一つ順番なども気にしながら地道に積み上げて行ったので、単純にオセロを作るだけでもかなり時間がかかった。
学んだ事
  • 班WIKIを書いたことで、班員に自分の状態を知らせるだけでなく、後で見なおした際にこのプロジェクト通して自分が何ができるようになったかを簡単に振り返られるので、とても良い記録を作ることができた。
  • 実際にコードを書くだけではない、準備や設計、班員とのコミュニケーションを踏まえた広い意味でのプログラミングというものの片鱗に触れることができ、完成はしなかったもののチームの一員として自分の役割を認識し、どう動くべきかを学べてよかった 。
  • 失敗することは当たり前で、それをどう修正するかが大事だということを学んだ。それにより課題解決能力が微量ながら身についた気がする。
  • チームで動く際にやってはいけないこと(インターフェースの統一を無視すること)を失敗から学び、逆にやったほうがいいこと(他モジュール担当とのコミュニケーション)も学べて、かつHTML,CSS,Javascriptのスキルやデバッグのスキルを磨けた演習だったので、得たものはかなり多かった。この経験を次のチームでの開発や個人での開発に活かしてやっていきたいと思った。


最終更新日:2018/08/03 15:46:52