1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
155: SGGK ◆6pZCoAtaxk [sage] 2011/02/27(日) 22:11:45.89 ID:wy4sbNmV ソースを修正していて思ったが、C++で書いたプログラムは保守性が良くて再利用性にも優れてるような事を どこかで聞いた記憶があるけど、そうなっている感じがしない。 たぶん自分の書き方に問題があるので、この機会に少しでも変えてみようと思った。 1.クラスのメンバ変数をpublicにして直接読み書きしていた。(変数毎に関数を書くのが大変だし、いちいち関数を使っていたら、その分処理速度が遅くなるのではと思った。) これを次のようにする。 privateのメンバ変数にして変数毎にget関数、set関数を作ってこの関数を経由してアクセスする方法にする。 そうすれば、例えば、座標系をx,y,zで管理していたのをVECTOR構造体に変更した場合でも get関数、set関数の修正で済む場合もあるので、修正に有利だし、 get関数、set関数が書かれている場所を見れば、クラスのつながりも見えやすくなりそう。 2.get関数、set関数のような変数の取得、設定しかしない関数は行数が短いので、 定義をヘッダファイルに書いていたが、定義はすべてcppファイルにまとめて見やすくする。 それが出来ない例外もあった記憶があるけど、その場合は仕方ないのでヘッダファイルに書く。 3.変数の命名規則を考え、それに従った変数名を付ける。 但し、最低限の規則にしておき、不完全でもあまり気にしないようにする。 プログラムの修正が今より少しでもやりやすくなればいいのだから。 今考えてるのは、メンバ変数は単語の区切りだけ大文字にして書く。 メンバ関数も同じだけど、最初の文字だけは小文字にする。 そして、メンバ変数の先頭には、m_ を付ける。 メンバ変数で静的変数なら、ms_ を付ける。 メンバ変数でポインタなら、mp_ を付ける。 これでやってみる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/155
161: SGGK ◆6pZCoAtaxk [sage] 2011/03/03(木) 22:36:53.71 ID:dBNi9i4V class FieldControl { (略) FieldData m_Field;//クラスFieldDataの型を持つオブジェクトm_Field AnimDraw m_FieldAnim;//クラスAnimDrawの型を持つオブジェクトm_FieldAnim (略) }; のようなクラスがあり、m_Fieldの中にm_FieldAnimのアドレスを記憶しているポインタmp_Animがあり、 m_FieldAnimの中にはdraw()関数があるとしたら、 m_FieldAnim.draw();//方法1 m_Field.mp_Anim->draw();//方法2 は同じ事をしているらしい。 方法2のように書くべきところを方法1のような書き方をしていたのがわかって気になったので自分用メモ。 >>155の書き換えを進めていてフィールド表示は出来た。 今は選手関係の処理に着手中だけど、ここからは選手人数分のループや選手の移動関数などが絡んできて時間がかかりそうな予感。 一日の作業時間はとても短いので・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/161
162: SGGK ◆6pZCoAtaxk [sage] 2011/03/06(日) 15:46:57.88 ID:CeMkUuli >>155や>>160の変更を同時にやろうとして収拾がつかなくなってきた。 >>160の>1クラスにつき1ファイルに変えようとした・・・のが良くなかったかもしれない。 クラスにあるメンバ関数をcppファイルの中で定義しようとしたときに、そのクラスのヘッダファイルに無い他のクラスのメンバ変数が含まれていたら その含まれていないクラスのヘッダファイルをインクルードしたり、または前方宣言とかいうのを書いたりするんだけど、いまいちよく理解しないでやってるからなのか どうもその辺が原因になってるような気がする。 それと移動処理のクラスは外部変数的な感じで外部に実体を定義するんだけど、 これも思い通りに出来ていないような気がする。ちゃんと書いたつもりなのに定義が無いといった意味合いのエラーが出る。 しかもアサーションがどうのこうのというエラーまで出てしまった(たしか1年ほど前にも似たエラーが出て大変だった)ので、 ここはいったん選手関係のファイルをひっこめて、もう一度フィールドの表示をさせるところまで戻して、 次に選手の画像データロード、選手の初期値テキストファイル読み込みの部分だけをコンパイル対象に戻して 動作が確認できるまでを頑張ってみる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/162
192: SGGK ◆6pZCoAtaxk [sage] 2011/04/03(日) 00:07:22.30 ID:1D3iDnp3 自分は>>155からget、set関数方式への書き直しを進行中だけど、書き直しにものすごい時間がかかってます。 そして今更ながらそのように直すメリットを見つけられないような気がしてきて不安だけど、 もうほとんど書き直してしまったし、ソースも多少見やすくなったような感じはするので、このまま頑張ってみます!。 今日は、ボール関係をなんとか実装したけど、ボールはフィールド中央に表示され続けるのみとし、まだ蹴れないようにしておく。 レーダー関係は何故かレーダーが表示されないので、原因を調べているところ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/192
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s