ゲームの「移動関数」に「場所」関数を含めるか、外部関数として屋外を含める方が効率的ですか?

StackOverflow https://stackoverflow.com/questions/958060

質問

私はC ++でゲームを作成しています(それについて言えば、私が使用するコードは重要ですか?)関数はより効率的です:

1:

int main()
{
    //display board
    //get player input
    //move player
    //if player is out of bounds,
      //force player back into bounds
}

2

//int main()
{
    //same thing, except without last two lines.
}
void move(char input)
{
    //if input does not place player out of bounds
      //move player according to input
}

基本的に、最初のエンティティはすべてのエンティティを移動し、すべてのエンティティの位置をチェックしてそれに応じてリセットします。2番目のエンティティは、プレーヤーの動きがループの終わりまで待つよりもレザーを動かしていないことを確認します。

これらの2つ(システム)のどれが他の2つ(システム?)が他のものよりも効率的または高速であるか、どちらも同等である場合、これらのどれが優れたコーディングスタイルになるでしょうか?

役に立ちましたか?

解決

私は、移動する前に移動が合法であることを確認します。そうすれば、何かを試して「ボード」を無効な状態に置くのではなく、正気な状態を維持します。また、オブジェクト指向の方法でより理にかなっています。オブジェクトは無効な動きをすることができないため、移動を信頼できます。

他のヒント

後者はより速いです(やり直していません)。また、それはクリーナーだと思いますが、それは意見の問題です。

移動する前にチェックするのは、範囲が速くなると思います。

スタイルに関しては、お勧めします いいえ Move()メソッド内から境界をチェックします。たとえそのチェックが独自のメソッドに抽出されていても、Move()メソッドをラインの2つの「変更する理由」(したがって) 単一の責任;一部の人々は、クラスレベルでのみこれを実施しますが、それを逃れることができる場合は方法にお勧めします)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top