0

私は C++ でゲームを作成しています (そういえば、私が使用するコードは重要ですか?)、これはボード ゲームとして大まかに説明できますが、これら 2 つの「キャラクターが範囲外かどうかを確認する」のはどちらでしょうか?関数はより効率的です。

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 つ (システム?) のどちらが他方よりも効率的または高速であるか、または両方が等しい場合、どちらがより優れたコーディング スタイルになるかを知りたいです。

4

3 に答える 3

0

後者の方が高速です (AND 取り消しを行わない)。私もそれがよりきれいだと思いますが、それは意見の問題です。

于 2009-06-05T20:50:15.783 に答える
0

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

于 2009-06-05T20:51:03.380 に答える
0

移動する前にチェックする方が速いだろうが、人が範囲外に出る可能性は非常に低い.

スタイルに関しては、そのチェックが独自のメソッドに抽出されたとしても、move() メソッド内から境界をチェックしないことをお勧めます責任; クラスレベルでのみこれを強制する人もいますが、それを回避できる場合はメソッドに推奨します)。

于 2009-06-05T21:17:16.430 に答える