0
    for (int x = 0; x <= battleField.getCols(); x++){
                for (int y = 0; y <= battleField.getRows(); y++){

                    if ((battleField.get(x,y) == team) && ((x + y)
                            != battleField.get(row, col)))
                    {
                                .
                                .
                                .
                    }
               }
   }

BattleField.get(row, col) はグリッド上の自分の位置を返します。私の質問は、自分の位置がどこにあるかを確認することから自分自身をスキップするにはどうすればよいかということです。for ループが x と y をチェックするとき、グリッド全体を通過するためです。どうすればいいですか?

4

3 に答える 3

1

現在の位置の変数の名前がcurrent_xandcurrent_yであると仮定すると、ループ内で次のようなことができます...

bool isMyPosition = (x == current_x) && (y == current_y);

if ( !isMyPosition 
    && (battleField.get(x,y) == team)
    && ((x + y) != battleField.get(row, col)))
{
    ...
}
于 2013-10-22T21:23:28.257 に答える
0

それ以外の

((x + y) != battleField.get(row, col)) 

私はあなたが欲しいと思います

(x != row && y != col)

最初の部分が必要な場合は、これを内側の for ループの先頭に追加するだけです。

for (int x = 0; x <= battleField.getCols(); x++){
            for (int y = 0; y <= battleField.getRows(); y++){

                if(x == row && y == col) // This will check if the loop is looking at your position
                    continue; // This will go to the next step in the "y" for loop, essentially skipping the rest of the code in this block

                if ((battleField.get(x,y) == team) && ((x + y)
                        != battleField.get(row, col)))
                {
                            .
                            .
                            .
                }
           }

}

于 2013-10-22T21:27:59.040 に答える
0

if(Question.IsAbout(EscapingOnCheck))

continueほとんどの言語には、条件が満たされたときにループをエスケープするために使用できる何らかの種類があります。

そうしないと

現在の位置をいくつかの変数に保存し、別のネストされたループを追加するか (デバッグのため)、&& 句を追加します (コードを減らすため)。

于 2013-10-22T21:27:59.783 に答える