私はC++で構築してきたかなり単純なボードゲームを持っています。現在、プレイヤーにはゲームのプレイヤー数に応じてプレーヤー番号(1,2,3、... N)が割り当てられます。かなり標準。選手とその統計は、名前と番号を含むファイルに保存されます。私はターンファイルを使ってディレクトリを読むことでターンを処理します。ターンはプレイヤーによって提出され、プレイヤー名とタスク/ターンのみを含む。将来的には、プレイヤー番号を変更してゲームの順序を混ぜる予定です。ボードゲームの回転処理を改善する
(あなたはボードゲーマーなら、Caylusまたはアグリコラを考える)
選手は、アプリケーションの起動時に読み込まれます。私はコマンドを与え、ターンが処理されます。基本的に、私はターンのディレクトリを1つずつ読み、そのターンをプレイヤー名にマッチさせるだけです。それはそのままで、順番に処理がありません。私がいることを挿入し、どのプレーヤーで行く今度比較していたよう
- :プレーヤー3は、私は、次の解決策を考え出したので、私は、これは素晴らしいデザインではなかった考え出しプレーヤー2.
前に行くことができます鍵はプレーヤー番号である
std::map<int, Turn>
になります。 - すべてのターンを集めたら、マップの中で1から始まる選手Nを探して、自分の番を処理します。
- 私は、ターンを処理するためにプレイヤー番号とプレイヤーを一致させる必要があるので、ここで再びプレイヤーのリストを繰り返しています。
- すべてのプレーヤーを処理するまでこれを行います。
これを行うより良い方法はありますか?これはかなり複雑でオーバーヘッドが多いようです。
ありがとうございます!
注:私のターン処理方法は、ターンファイルから読み取られたターンを表すstruct
(プレーヤーの統計情報ファイルを表す)とPlayer class
を取ります。
プレイヤーの数が少ない場合、単純な配列型の反復処理で十分です。複雑な構造は、このような場合、原始的な構造よりも遅くなる傾向があります。 –