-8

私は C++ でマインスイーパ プログラムのようなものを作成しようとしています。いくつかのテストを実行した後、何らかの理由で for ループの 1 つが終了しないことがわかりました。かなり長い間コードを調べてきましたが、理由がわかりません。私を助けてくれてありがとう、私はC ++に少し慣れておらず、非常に困惑しています。

コードは次のとおりです。

for (int r = 0; r <= 8; r++)
{
    for (int c = 0; c <= 8; c++)
    {
        int num = 0;
        if (realmap[r][c] != 10)
        {
            if (r - 1 != -1 && realmap[r - 1][c] == 10)
            {
                num++;
            }
            if (r - 1 != -1 && c + 1 != 9 && realmap[r - 1][c + 1] == 10)
            {
                num++;
            }
            if (c + 1 != 9 && realmap[r][c + 1] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && c + 1 != 9 && realmap[r + 1][c = 1] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && realmap[r + 1][c] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && c - 1 != -1 && realmap[r + 1][c - 1] == 10)
            {
                num++;
            }
            if (c - 1 != -1 && realmap[r][c - 1] == 10)
            {
                num++;
            }
            if (r - 1 != -1 && c - 1 != -1 && realmap[r - 1][c] == 10)
            {
                num++;
            }
            realmap[r][c] = num;
            Sleep(5000);
            cout << "test3";
        }
    }
}

問題が発生しましたら、どうぞよろしくお願いいたします。誰も問題を見つけられない場合は、残りの if ステートメントを含めます。

4

3 に答える 3

2
if(r+1 != 9 && c+1 != 9 && realmap[r+1][c=1] ==10

コードのどの部分が実際に何を行っているか、またはチェックしているかはわかりませんが、最初の 2 つの条件が満たされるたびに c が 1 にリセットされ、無限ループが発生します。

于 2013-08-08T19:39:41.003 に答える