1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
162: SGGK ◆6pZCoAtaxk [sage] 2011/03/06(日) 15:46:57.88 ID:CeMkUuli(1) AAS
>>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_ を付ける。
これでやってみる。
や>>160160(1): SGGK ◆6pZCoAtaxk [sage] 2011/03/01(火) 23:31:52.52 ID:huwPkO/S(1) AAS
>>159
しばらくの間は今までのプログラムの書き換え作業のような感じになるけど、
やれるところまでは頑張ってみようと思ってます!
今までは1つのファイルに複数のクラスの宣言を書いていたのを、
1クラスにつき1ファイルに変えようとしたためか、ファイルがどんどん増え、
しかもほぼ全てのメンバ変数にget、set関数を用意するので作業量が膨大になりそうな感じ・・・。
の変更を同時にやろうとして収拾がつかなくなってきた。
>>160の>1クラスにつき1ファイルに変えようとした・・・のが良くなかったかもしれない。
クラスにあるメンバ関数をcppファイルの中で定義しようとしたときに、そのクラスのヘッダファイルに無い他のクラスのメンバ変数が含まれていたら
その含まれていないクラスのヘッダファイルをインクルードしたり、または前方宣言とかいうのを書いたりするんだけど、いまいちよく理解しないでやってるからなのか
どうもその辺が原因になってるような気がする。
それと移動処理のクラスは外部変数的な感じで外部に実体を定義するんだけど、
これも思い通りに出来ていないような気がする。ちゃんと書いたつもりなのに定義が無いといった意味合いのエラーが出る。
しかもアサーションがどうのこうのというエラーまで出てしまった(たしか1年ほど前にも似たエラーが出て大変だった)ので、
ここはいったん選手関係のファイルをひっこめて、もう一度フィールドの表示をさせるところまで戻して、
次に選手の画像データロード、選手の初期値テキストファイル読み込みの部分だけをコンパイル対象に戻して
動作が確認できるまでを頑張ってみる。
304: SGGK ◆6pZCoAtaxk [sage] 2011/08/17(水) 23:01:09.88 ID:umYfMU6K(1) AAS
(3)については、ボールの移動はそもそもボールクラスのメンバ関数moveの方で計算されるので、
状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。
つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。
正解は、
ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする
だった。
コーナーキック、ゴールキックもスローインを参考にして実装した。
これで、
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
得点以外は実装完了。
次は、
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
を一緒にやる時に得点実装する予定。
348(1): SGGK ◆6pZCoAtaxk [sage] 2012/03/11(日) 14:04:38.88 ID:Ow6aUl7a(2/2) AAS
しばらくの間、進まなくなるかもしれないので、UP。
外部リンク:ux.getuploader.com のsggk028です。
例えば、shiftキーを押すと選手の移動方向が一定になるようにしてあるけど、
これをドリブル中にやるとドリブルを放棄して選手が一定方向に進んでしまう。
何か新要素をプログラムに加えるたびにあちこち不具合が出てしまい、直すのにものすごく時間がかかってしまう。
あちこちにif文を使ってるので難しい。
まだどちらかといえば初期の段階なのにこれだけ難しくなるということは
何かテクニックが必要なのかもしれないので、ちょっと調べてみるつもり。
以前このスレで紹介してもらったゲームAIプログラミングの最初の方だけ読んでみようと思うけど、
前読んだ時もあまりよくわからなかったので、もし駄目だったら、このUPがラストの可能性あり…orz
349(1): SGGK ◆6pZCoAtaxk [sage] 2012/04/15(日) 23:49:55.88 ID:vuiViXZE(1) AAS
一ヶ月少々経過。時間過ぎるの早すぎる。
読んでいる本の最初の方というのは、第2章だけの44ページ程度のこと。
たぶん8回ぐらいは読んだと思うが、前半がぼんやりと解ったような気持ちになるだけで、後半はまだまだだな〜という感じ。
サンプルソースをダウンロードしておかないと分からない個所がところどころにあり、幸いダウンロードは出来た。
趣味なので諦めずできるときに少しずつゆっくりと…orz
357: SGGK ◆6pZCoAtaxk [sage] 2012/06/16(土) 23:58:57.88 ID:281LS4tC(2/2) AAS
>>353353(1): SGGK ◆6pZCoAtaxk [sage] 2012/06/12(火) 23:21:21.15 ID:LaJwmlYj(1) AAS
生存報告。なかなか作業進まず。
選手の移動目標の状態遷移図は書いてみた。
この遷移を本で見たステートデザインパターンを使ってFieldPlayerクラスの中に実装できないかを思い、
FieldPlayerクラスがPlayerDataクラスを継承しているところにPlayerDataクラスがBaseGameEntityクラスを継承、
つまり継承の継承のように3段階にしたら、
「 クラス、構造体、共用体に既定のコンストラクタがありません 」というエラーが出た。
とりあえず、デフォルトコンストラクタを書いてないクラスがあったので書いてみたらコンパイラを通ったけど、
選手が真っ直ぐ動くだけでマウスについて行かなくなった。そろそろ限界かもしれない…。
でやろうとしていたステートパターンを中止。
FieldPlayerクラスがPlayerDataクラスを継承していたのをやめて、FieldPlayerクラスに一体化した。
そして選手移動関数の切り替えに使っていたストラテジーパターンの処理も外して、速度一定で歩く関数ひとつにした。
396: SGGK ◆6pZCoAtaxk [sage] 2014/06/16(月) 23:41:05.88 ID:F/7hmRJ3(1) AAS
文字も出せればもう何かが作れそうですね(^^
自分はホームページもソースもちょっと離れただけですぐ忘れてしまうので、思い出すところからの再開です。^^
446: SGGK ◆6pZCoAtaxk [sage] 2016/05/03(火) 21:41:05.88 ID:hCfT08eP(1) AAS
書き込みが!?
作業を早く先に進めたい気持ちがUP!
本の方は、今読んでるソースのbreak文の行き先を自分が勘違いしてたのにやっと気付いて、
そこから少し先に読み進めることができたぐらいで、自分には複雑で難解なソースなので
4分の1ぐらい読み終えるまで、よくてあと1カ月はかかるかもな状況。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s