問題の背景
私は基本的な戦艦のようなスピンオフ ゲームに取り組んでおり、C++ (グラフィックなし) で時間をかけて機能を追加し続けたいと考えています。現在、私はchar 型の 2D ベクトル ( GameBoardと呼ばれる) で表される 50 x 75 のゲーム ボードを持っています。ゲーム ボードを作成し、各場所を「.」で設定します。文字。座標を推測すると、以前に推測した場所は「-」でマークされ、ヒットした場所は「X」でマークされます
私はプログラムでどこにいますか
ゲームを変更して、さらにいくつかの機能を有効にすることにしました。それほど進んでいるわけではありませんが、疑似コードで設計をスケッチすることで、このアップグレードをどのように進めることができるかについてもっと考えるようになりました。
GameBoardを charにする代わりに、Block (ボード上の空きスペース)というクラスを作成します。このクラスには、正しい char を視覚的に表示するための char 変数と共に、ax および y 座標変数が含まれるようになります。ブロックには、「機能」の派生クラスに分割されるオブジェクト「機能」を保持する機能があります。これらのクラスの詳細については、一番下までスクロールできます。
これは私のクラス階層ツリーがどのようになるかです:
feature
item vehicle
gold nuke plane
助けが必要なこと
私は基本的に、やりたいことのアウトライン/構造のセットアップを持っています。今、すべてを接続するためにキックスタートの助けが必要です. ポインターをいつ、どのように使用するかを決定するのはかなり苦手です。
A.) Blockクラスのポインターを保持するようにGameBoardを変更する必要がありますか? それとも実際の ブロックオブジェクトですか? - また、BlockはFeatureまたは実際のFeatureオブジェクトへのポインターを保持しますか?
B.)空にすることも、値を指定することもできるFeature変数を追加するにはどうすればよいですか? NULLに設定するだけですか?
C.) BlockのFeature値を交換するには、カスタム コピー コンストラクターが必要ですか?
D.)プレイヤーがフィーチャー オブジェクトを使用している場合、ブロックからフィーチャーオブジェクトを削除するにはどうすればよいですか?
E.) 場合によっては、1つのブロックに複数の機能が存在することがありますか?
F.) BlockがFeatureを保持でき、Featureが既に別のクラスから派生しているように、Block クラスと Feature クラスを宣言するにはどうすればよいですか (この投稿には含まれていません) 。
私のクラスに関する追加の詳細
したがって、GameBoard はブロックを格納するベクトルです。ブロックは基本的に、ボード上の個々のスペースです。ブロックには、その位置の座標、それを表す char、およびFeatureオブジェクトを保持する可能性が含まれていますが、ほとんどの場合、ブロックは機能を保持していません。機能はブロックから派生し、ゲーム内のボーナス報酬として機能します。そのため、Featureはさらに 2 つの派生クラス、Item Feature または Vehicle に分岐します。等々。
プレイヤーが座標を選択すると、メソッドは GameBoard 上/内のそのブロックに移動し、最初に char 値が以前に使用されたことのない有効な空間を表しているかどうかを確認します。次に、この Block for Feature の内容をチェックします。Feature は空であるか、派生した Feature オブジェクトを含んでいる可能性があります。
これで私の小説は終わりです。いろいろ書いてすみません。助けを得る最善の方法は、ヘルパーに何が起こっているかを知らせることだと思います。「要点をつかめ」と言って返信しないでください。私は知っています.. 詳細が不足している場合はお知らせください。ありがとう!