1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
抽出解除 レス栞
161: SGGK ◆6pZCoAtaxk [sage] 2011/03/03(木) 22:36:53.71 ID:dBNi9i4V(1) AAS
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のような書き方をしていたのがわかって気になったので自分用メモ。
>>155155(3): SGGK ◆6pZCoAtaxk [sage] 2011/02/27(日) 22:11:45.89 ID:wy4sbNmV(3/3) AAS
ソースを修正していて思ったが、C++で書いたプログラムは保守性が良くて再利用性にも優れてるような事を
どこかで聞いた記憶があるけど、そうなっている感じがしない。
たぶん自分の書き方に問題があるので、この機会に少しでも変えてみようと思った。
1.クラスのメンバ変数をpublicにして直接読み書きしていた。(変数毎に関数を書くのが大変だし、いちいち関数を使っていたら、その分処理速度が遅くなるのではと思った。)
これを次のようにする。
privateのメンバ変数にして変数毎にget関数、set関数を作ってこの関数を経由してアクセスする方法にする。
そうすれば、例えば、座標系をx,y,zで管理していたのをVECTOR構造体に変更した場合でも
get関数、set関数の修正で済む場合もあるので、修正に有利だし、
get関数、set関数が書かれている場所を見れば、クラスのつながりも見えやすくなりそう。
2.get関数、set関数のような変数の取得、設定しかしない関数は行数が短いので、
定義をヘッダファイルに書いていたが、定義はすべてcppファイルにまとめて見やすくする。
それが出来ない例外もあった記憶があるけど、その場合は仕方ないのでヘッダファイルに書く。
3.変数の命名規則を考え、それに従った変数名を付ける。
但し、最低限の規則にしておき、不完全でもあまり気にしないようにする。
プログラムの修正が今より少しでもやりやすくなればいいのだから。
今考えてるのは、メンバ変数は単語の区切りだけ大文字にして書く。
メンバ関数も同じだけど、最初の文字だけは小文字にする。
そして、メンバ変数の先頭には、m_ を付ける。
メンバ変数で静的変数なら、ms_ を付ける。
メンバ変数でポインタなら、mp_ を付ける。
これでやってみる。
の書き換えを進めていてフィールド表示は出来た。
今は選手関係の処理に着手中だけど、ここからは選手人数分のループや選手の移動関数などが絡んできて時間がかかりそうな予感。
一日の作業時間はとても短いので・・・。
223: SGGK ◆6pZCoAtaxk [sage] 2011/04/18(月) 23:13:36.71 ID:kLP7Gc7/(1) AAS
>>221,222221(1): 179 [sage] 2011/04/18(月) 02:43:15.47 ID:OTLjhXG7(1/2) AAS
最初の初期化で GetNowCount() - 1 を入れてるのは
最初のループ部分でバグった値を入れないようにするためですw
なのでGetNowCount() を取っちゃうと当然バグります
-1 は入れなくてもいいのですが最初のループに最速で到達しても1msを返すように設定してあるだけです
初期値に0を入れてしまうと
if(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_back - time_know; //一回目はbackは0のままなので -xxxxxxxxxx桁くらいの数値が引かれてフレームタイムが-値でバグる
プログラム開始から終了までずっと測ってる前提で作ったので(タイトル画面等でも測定だけしてる)
ある部分だけ測るという場合はフラグ管理する、初期化を呼び出す等必要ですねぇ
ここまで書いてあれなんですが>>217さんの言う通り
経過時間 += 17ms 等で固定した方がいいかも知れないで
まぁFPSが固定されてるなら問題は出ないので余り気にする事も無いカモ…。
222(1): 179 [sage] 2011/04/18(月) 02:55:13.67 ID:OTLjhXG7(2/2) AAS
あれ?
式間違ってるじゃん・・・/(^o^)\
ゴメンナサイ3行目 backとknow逆デシタ
f(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_know - time_back; //一回目はbackは0のままなので xxxxxxxxxx - 0 でxxxxxxxxxくらいの値がフレームタイムに入る
ついでにちら裏:
WINDOWぽいのはなんとか形になった気がする
ので次の作業へー
フィールドの資源地とか基地ぽいの作るカナー
ループが最速で到達した場合というのは想定してなかったので勉強になりました。
ありがとうございました。
今日は次の目標を考えて終了。
次の目標は、前半、ハーフタイム、後半、試合結果表示の4つの状態遷移実装。
366: SGGK ◆6pZCoAtaxk [sage] 2012/06/29(金) 00:19:39.71 ID:0PUJkiiN(1/2) AAS
>>365365(2): 名前は開発中のものです。 [sage] 2012/06/28(木) 21:49:03.02 ID:ckB52e4z(1) AAS
SGGK氏には「まとめサイト」を作ることを提案します。
これまでに考えて行ってきたことと、それに対するコメントを対応付けると、
現在のご自身のポテンシャルが見えてくると思います。
また、まとめサイトを持っていたほうが、建設的なコメントが得られるように
なると思いますよ。
な…なるほど!、ありがとうございます。
ゲームが完成するか自信がないため、まとめサイトについては考えてませんでした。
去年9月頃に受けたアドバイスの後半から追いつけなくなってしまってたので、
そういうのもまとめられたらと思います。
398: 名前は開発中のものです。 [sage] 2014/06/21(土) 15:21:35.71 ID:Cw+IxUfs(1) AAS
あるときはis-a、そしてあるときはhas-a。
小手先のクラス構造を変えるだけの日々で、まったく前に進まないでーす。
421: SGGK ◆6pZCoAtaxk [sage] 2014/08/09(土) 14:56:41.71 ID:FAp7nCFE(1) AAS
生活があっての趣味なので落ち着いたらまたいつでもどーぞ^^
自分も作業が止まっているけど、気長にやって行きます。
(アクセス禁止中なのでp2で書いたら2chscなのか不明なサイトに飛ばされてた...
アク禁のときは練習中のホームページに書いておくので、
そちらを見てもらえると安心です。^^)
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.921s*