だから私は、UI を備えたテキストベースのようなゲームを作成しようとしています (解析とすべての楽しいものを備えた真のテキストベースとは対照的に)、これは基本的に RPG です。この目的のために、ゲームには発生する可能性のあるさまざまなイベントがたくさんあります (ただし、発生することは保証されておらず、全体的な順序で発生することもありません)。これをコーディングする最も効率的な方法を考えています。
現時点では、GameState と呼ばれる静的クラスを作成することを考えています。このクラスには、他の情報が含まれるほか、その中に配列と列挙型が含まれます。配列は、会話または複数オプションのイベントの選択のために、おそらくバイトになります。0 はイベントが発生していないことを示し、数値 1 - X は、可能な X の中からどのオプションが選択されたかを表します。このようなもの:
public enum GameEvents{
Event 1,
Event 2,
Event 3 };
public static byte[] GameEventStates = new byte[Enum.GetNames(typeof(GameEvents)).Length];
イベントなどで、次のような行を実行できるようになります。
if(GameState.GameEventStates[GameState.GameEvents.Event2] == 1)
{
Stuff Here;
}
また
GameState.GameEventStates[GameState.GameEvents.Event4] = 1;
(注: 厳密に「見たことがある」イベントの場合、見たことがない場合は 0、見たことがある場合は 1 になります)。
ただし、これの一部は強制されているように感じますが、私には思いつかないよりエレガントな方法があるようです。それがどうなるかはわかりませんが、それでも私は
A) イベントが発生したときに値を変更するためにグローバルにアクセスし、それらの発生をチェックできるようにする。
B) 時間の経過とともにゲームのコンテンツが拡大するにつれて、より多くのイベントを簡単に追加できます。
C) 保存ファイルとの間で値を簡単に保存およびロードします。
これは本当にこれを行うための最良の方法ですか?私が思いつくことができることを認めたのは私が初めてです...「創造的な」方法は、問題を解決するのにはあまり適していません。セカンドオピニオンをいただければ幸いです。前もって感謝します。