-2

ゲームのゲーム状態のように、しばらくの間変更されたままになるものがあるとしましょう。このゲームでは、ゲーム ループが常に実行され、更新メソッドが常に実行されます。

ゲームの状態を表す変数で switch ステートメントを使用することにより、ゲームの状態を実現できます。その値に応じて、メニューやゲームプレイ、またはゲームの別の状態のコードが実行されます。

ゲームの更新ごとに、最初にこの switch ステートメントを通過しますが、これは非効率的です。

しばらく変更されないものに対して、switch ステートメントのより効率的な代替手段はありますか? これはメソッドの変数で行われていることがわかりますが、c# はメソッド変数をサポートしていないと思います。

4

2 に答える 2

0

スイッチを何かに変更するための標準的なアプローチは、choice-to-handler の Dictionary を使用することです。これについてはこちらで説明していますC# コードのリファクタリング - Switch ステートメント

var choices = new Dictionary<ChoiceType, Func<ChoiceResult> > (); 
...

public ChoiceResult HereWasSwitch(ChoiceType myChoice)
{
  return choices[myChoice]();
}

もう 1 つのアプローチは、ポリモーフィズムを使用して、各選択肢をそれを処理するクラスに置き換えることです。http://hanuska.blogspot.com/2006/08/swich-statement-code-smell-and.htmlをご覧ください

于 2012-07-29T05:17:36.060 に答える
0

ユーザーがいる場所に応じて、複数のループを作成します。

CPU 時間を完全に使い果たすことはない可能性が高いので、1/60 秒ごとに入力をチェックする何らかのマイクロタイム関数を作成することを検討してください。同じことがビデオ レンダリングにも適用できます。ほとんどのモニターは 60 秒または 120 秒ごとに更新されます。ゲーム内のシーンをレンダリングするために、CPU や GPU を 100% 使用する必要はありません。

Windows API を使用してゲームを作成する場合、Windows は自動的に入力頻度を処理し、フォーム データに更新が適用されるため、気にする必要はありません。

于 2012-07-29T05:21:25.267 に答える