私はビデオ ゲーム コース (残念ながら何も教えていません) のためにゲームを書いていますが、ゲーム エンティティと実際にゲームを実行するクラスとの間の相互作用を設計するのに問題があります。
私の問題はほとんどこれに帰着します: エンティティが位置を持っていると仮定すると、(ゲーム マネージャーがゲーム ステップを実行するのを待たなければならないのではなく) 直接変更することはできませんが、アクセスできるはずです。 AI チェックなどを実行します。
私の解決策は、とPosition
友達であるクラスGameManager
を作成し、このようなエンティティクラスを作成することです
class Entity {
public:
Position & getPosition() { return pos_; }
private:
Position pos_;
};
そのため、マネージャーはエンティティの位置を変更できますが、他のクラスは観察することしかできません。ただし、この推論は他の多くのプロパティにも当てはまります。また、エンティティ クラスは実際には一連のサブクラスに派生し、そのサブクラスにはますます多くのプロパティが含まれているため、friend
ほぼすべての場所に属性を配置する必要があります。
この問題を解決するためのより良いアプローチは何でしょうか?