ステージ間ワープを作りましたが、自信がないので見てください。4年前なのでよろしければ、アドバイスをいただけないでしょうか。すいません、やっぱりいいです。なんだか自力でできそうです。ステージ間ワープを作りましたが、自信がないので見てください。//ステージデータ}この二つのクラスのprivateメンバを1Stageクラスの『m_Data』とPlayerクラスの『m_Hit』を使って、ステージとのあたり判定を確認する。2上記の判定で、当たってる場合は、Playerクラスの『m_x』『m_y』の位置と、『m_vx』『m_vy』の加速度と、『m_state』の状態を、変更する。Hit』とメンバの『m_Data』を基に当たっているかどうかを戻り値で返す関数を作り、それをPlayerクラスの中で使い、上記の処理を行う2どちらのクラスのメンバにアクセスできるクラス内で、上記の処理を行うどちらがいいのでしょうか?今回の質問をする前は1の方法でやっていました。Hit)』をGameMngを通して、Playerに取得させ、上記の処理を行っていました。この方法だとGameMngがどんどん大きくなってしまうので、PlayerクラスとStageクラス、両方のメンバにアクセスでき、その二つを用いた上記処理だけを行うクラス『PlayerStage_Collisionクラス』を作ろうと思ったのですが、PlayerクラスとStageクラスのメンバにどうアクセスするのか?『PlayerStage_Collisionクラス』をPlayerクラスとStageクラスのフレンドクラスにすればいいのか?それとも自分が知らない別の方法があるのか?ゲッターとセッターなんか使ったらprivateにした意味ないし。なると、ゲッターとセッターはそもそも使っちゃいけない禁忌なんじゃね?じゃあそれを頻繁に使ってた俺はいったい。ああもう、どうメンバをやり取りしたらいいんだ......と、ひどく悩み、なかなか方針が決まりません。アドバイスお願いします。ステージ間ワープを作りましたが、自信がないので見てください。Playerのインスタンスを作ってインターフェースクラスを使ってやり取りするのはどうでしょう。}};こんな感じです。コンパイルはしていません。ステージ間ワープを作りましたが、自信がないので見てください。返信ありがとうございます。ひとつわからないので質問させてください。ステージ間ワープを作りましたが、自信がないので見てください。->GroundHit_DY(PlayerStage_InterFace::e_HITTYPE_GROUND);}コード:/*GameScene_Base.Cpp*//*GameMngクラスを新C言語のシーン管理を参考に書き換え。*//*ゲームの状態遷移をシーンとして管理。そのシーンの基底クラス。ステージ間ワープを作りましたが、自信がないので見てください。->GroundHit_DY(PlayerStage_InterFace::e_HITTYPE_GROUND);}コード:/*GameScene_Base.Cpp*//*GameMngクラスを新C言語のシーン管理を参考に書き換え。*//*ゲームの状態遷移をシーンとして管理。そのシーンの基底クラス。ステージ間ワープを作りましたが、自信がないので見てください。ステージ間ワープを作りましたが、自信がないので見てください。4年前http://melpon.org/wandbox/permlink/NLtG2eMDfGNd3YES汚いですがコンパイルが通る形まで持って行きました。(wandboxでコンパイルが通ることを確認済みです)コードを一応spoilタグでくくっておきます。返信ありがとうございます。ひとつわからないので質問させてください。}};/*ここ*/の部分どういう仕組みになっているんでしょうか?どうやってインターフェースクラスの純粋仮想関数を使ってるんですか?すいません、スマホから頑張って省略しながら入力したせいか、そのあたりがまるっと抜けていますね。コンストラクタの引数で渡しています。継承したクラスならどれでも渡せるようになっています。純粋仮想関数を持ったクラスはそのままではインスタンスが作成できません。関数の中身が定義されていませんから、どう振るまえばよいのか分からないのです。純粋仮想関数をオーバーライドすれば中身が定義されているのでインスタンスを作ることができます。c;これをポインタで宣言し、アップキャスト(参考)を使うとこういうことができます。これと同じことをしているわけです。ステージ間ワープを作りましたが、自信がないので見てください。途中で二度も送信してしまいました!すいません!大体こんな感じでいいんでしょうか?Stage.cppがどうなっているか分かりません。Stage_Mgrですべての当り判定をするのではなく、ステージクラスごとに当り判定を持たせる方がよいのではないでしょうか。(ステージごとにクラスを作っている場合)ステージクラスをステージ分用意しているのか、一つのステージクラスを用意してインスタンスを使いまわしているかで変わると思いますので、わたしは何とも言えません。ステージ間ワープを作りましたが、自信がないので見てください。Stage.cppがどうなっているか分かりません。以下の六つのクラスで構成されてます。Stage_Center//拠点ステージステージ変更のためのインターフェースクラス:StageChangerステージの画像を管理するクラス:StageImg_Mngそしてそれらを管理するクラス:Stage_Mngこのクラスたちを以下に貼ります。StageData[ChipY_Num*ChipX_Num]);//要素数分だけデータ変数にハンドル内容を代入/*これを各レイヤーごとに実行。/*省略されてるが、この後、各レイヤーごとにforループが書かれてる。//次のシーンをセットする}/*あたり判定。m_player->GetHit(Player::HIT_DOWN));}ステージ部分は大体こんな感じです。ステージ間ワープを作りましたが、自信がないので見てください。4年前ゲーム管理部はこんな感じです。ステージ間ワープを作りましたが、自信がないので見てください。4年前わたしは、異なるオブジェクトが干渉する処理は、デザインパターンでいうところのアブストラクトファクトリーパターンで、インターフェースを引っ張ってきて、メソッドを呼び出すようにしています。pGlobalContext->GetStageContext();例えばグローバルなコンテキストからステージのコンテキストを取得しpStageContext->GetAroundInfo(&info);ステージコンテキストを経由して周辺情報を取得という具合です。コンテキストはインターフェースとして定義し、メソッドを呼び出してコンテキストを取得することで、実装を隠せます。実装が、単体のクラスか複数のクラスか、既存のインスタンスか新たに作られるインスタンスか、といったことは、それを呼び出して利用する側に影響しません。プレイヤーの行動を決定するのに必要な周辺情報は、それをするために必要十分なものに抽象化します。異なる同位オブジェクトにアクセスして依存関係が大きくなってしまうのは避けなければいけません。ステージ間ワープに関しては、ステージが「次のステージ」の情報を持つといったことは避けたほうが良いと思います。オブジェクト自体を変化を意識するように変えてしまうのはよくありません。変化を管理する別のオブジェクトを用意しましょう。フェードイン・アウト中は、それ以外の時間を進めなければ良いのです。更新・描画のサイクルが正しくできているならば、オブジェクトを現状のまま静止させることは難しくありません。ステージ間ワープを作りましたが、自信がないので見てください。当り判定を行うのではなくて、当ったかどうかの結果が分かればよいのではないでしょうか。内では判定を行わずに、あたったかどうかの結果だけもらって、処理しています。当り判定を外部に丸投げしてしまい、結果だけをもらう形にした方がコードがすっきりすると思います。ほかに思ったことも書いておきます。基底クラスには仮想デストラクタを書きましょう。