110 likes | 190 Views
プロジェクト演習 III,V <インタラクティブ・ゲーム制作> プログラミングコース. 第 7 回 コードレビュー. 今日の生け贄. はぐれたメル 「生徒会クエスト」 傾向と対策 めちゃめちゃ読みやすい! 仕様書の添付が無かったが、 無くても問題ないレベルの充実したコメント シーンでも継承が使えてればもう少し縮むかもしれない. 今日のポイント. 仕分けのうまさ クラスが表すものの規模や種類について 継承を使わないシーン管理のテクニック 状態を表す定数値. 継承のうまい使い方 OOP の復習もかねて ポインタベースのインスタンス生成で気を付けた方がよいこと.
E N D
プロジェクト演習III,V<インタラクティブ・ゲーム制作>プログラミングコースプロジェクト演習III,V<インタラクティブ・ゲーム制作>プログラミングコース 第7回 コードレビュー
今日の生け贄 • はぐれたメル「生徒会クエスト」 • 傾向と対策 • めちゃめちゃ読みやすい! • 仕様書の添付が無かったが、無くても問題ないレベルの充実したコメント • シーンでも継承が使えてればもう少し縮むかもしれない
今日のポイント • 仕分けのうまさ • クラスが表すものの規模や種類について • 継承を使わないシーン管理のテクニック • 状態を表す定数値 • 継承のうまい使い方 • OOPの復習もかねて • ポインタベースのインスタンス生成で気を付けた方がよいこと
ファイルの仕分け方 • 実際のフォルダはドカッとぶちまけ • プロジェクト上でのフィルタ分けは美事 • これからの時代は、リアルフォルダの構造よりもこっちを重視した方がいいのかもしれない
ひとくちにクラスと言っても • 色んな規模のものを表せる • 自分の作っているクラスがどの規模に該当するのか?を考えてみよう • C++でのクラスの種類は • 値オブジェクト • 参照オブジェクト • 参照型値オブジェクト
下記のクラスはどういう関係にあるでしょう?下記のクラスはどういう関係にあるでしょう? • シーン(モード) • キャラクター • 敵 • マップ(ステージ) • サウンド • 当たり判定 • エフェクト • カメラ • ライティング • キー入力 • ベクトル • コンテナ(配列)
利用するクラス、されるクラス • シーンはキャラやマップを含有する • ゲーム固有の一品物処理 • サウンドやエフェクトは様々なシーンやキャラクターから利用される • コンポーネント • ベクトルクラスやコンテナは、ありとあらゆるクラスから利用される • モジュール
継承を使わないシーン管理 • 全てのシーンオブジェクトをポインタで保持 • 常に1つだけnewしてある状態にする • シーン生成、1ループ分の処理、切り替え時の削除は全てswitch分で分岐
本来は継承を使うと良い • 条件分岐がnewをするところだけで済む • が、この程度のシーン数なら大丈夫か? • 敵の管理では使えてるので大丈夫そう • マップも本来はしておきたい所
状態を表す定数値 • enumを使った列挙体の使用 • 1はタイトル画面、2はゲーム画面のこと、みたいに押し通していくのは厳しい • 定数名を付けることでソースの可読性が向上
ポインタでインスタンス管理する場合の注意点ポインタでインスタンス管理する場合の注意点 • コンストラクタでnew、デストラクタでdeleteするならそれはそれでいい • そうでないなら、コンストラクタでメンバのポインタにはNULLを代入するべき • そしてdeleteする時は「NULLじゃないならdeleteし、delete後はNULLを代入」するようにする • これを徹底すること