C++ で NDS のコーディングを行っています。決定木のように、イベントが順番に発生し、プレイヤーの選択に応じて変化するゲームを作成する予定です。例:
===場所===
- 廊下: プレイヤーが通過できる 2 つのドア
- バスルーム: 地下への秘密の入り口があります
- 地下:廊下に戻る
- ベッドルーム: バスルームにつながる
===シーケンス===
各部屋では、キーの押下が常にチェックされます。したがって、これは私が最初に考えたシーケンスをコーディングするための基本的で一般的に悪い方法です。
void drawText()
{
//writes the specified text to the screen depending on the room
}
void playGame()
{ //This function gets called to play through the whole game
drawText();
while(1)
{
updateKeys();
if (newPress()) //New key is pressed
{
if (getButtonInt()==BATHROOM_INT)
bathroom(); //it will launch the basement function as a subroutine
else //Bedroom
bedroom(); //it will launch the bathroom function as a subroutine
drawText();
}
//When returning from room function, the
}
}
この方法の多くの欠点のいくつかは次のとおりです。
- すべてを常に更新する必要があるため、マルチプレイヤーを実装することはほぼ不可能です
- 他の機能が更新されることはほぼ不可能 (フレーム/タイム トラッカーなど)
- ルーム間を移動するオプションを追加すると、再帰が発生し、メモリ オーバーフローが発生する可能性があります
では、質問:これらの欠点を解決する最良の代替手段は何ですか?
はい、switch ステートメント内にすべてを記述し、playGame 関数の外側の変数で switch ステートメント内の場所を追跡することはできますが、その構造は読み取り可能または論理的ではないようです。