0

色が交互になるチェッカーボードを作成しようとしています。四角形のベクトルを使用し、個々の四角形に色を付けています。

for (int i=0; i<8; ++i)
    for (int j=0; j<8; ++j)
    {
        grid.push_back(new Rectangle(Point(i*50,j*50),50,50));
        if (i%2==1)
            grid[grid.size()-1].set_fill_color(Color(lemon_chiffon));
        else if (j%2==1)
            grid[grid.size()-1].set_fill_color(Color(moss_green));

        if(j%2==1)
            grid[grid.size()-1].set_fill_color(Color(moss_green));
        else if (i%2==0)
            grid[grid.size()-1].set_fill_color(Color(lemon_chiffon));

私はさまざまな値で遊んで、何が色付けされているかを判断しようとしましたが、チェッカーボードに最も近いのはthisでした。私はこれが数学的な問題であることを知っており、誰かが私が間違っている場所を理解するのを手伝ってくれることを望んでいました.

4

2 に答える 2

0

あなたは実際には本当に近いです。問題は、あなたのif発言がまったく正しくないことです。あなたが望むことをするための少し簡単な方法があります。作業している行と列が偶数か奇数かを知りたいとします。同じ色なら一色、違う色なら別の色にしたい。私はこのようなことをします:

for (i = 0; i < 8; i++)
{
    for (j = 0; j < 8; j++)
    {
        bool rowIsEven = ((j % 2) == 0); // Is the row an even numbered row?
        bool colIsEven = ((i % 2) == 0); // Is the column an even one?
        grid.push_back(new Rectangle(Point(i*50,j*50),50,50));
        if (rowIsEven == colIsEven)
        {
            grid[grid.size()-1].set_fill_color(Color(lemon_chiffon));
        }
        else
        {
            grid[grid.size()-1].set_fill_color(Color(moss_green));
        }
    }
}
于 2013-03-28T04:11:15.910 に答える
0

まず、ブラケットとスペースを使用すると、コードが他の人にとって読みやすくなります。グリッドを変更するものが他にない場合、これで問題が解決すると思います。

for (int i=0; i<8; ++i) {
    for (int j=0; j<8; ++j) {
        Rectangle gridSquare = new Rectangle(Point(i*50,j*50),50,50);
        if(((i % 2) == 1) == ((j % 2) == 1)) {
            gridSquare.set_fill_color(Color(moss_green));
        } else {
            gridSquare.set_fill_color(Color(lemon_chiffon));
        }
        grid.push_back(gridSquare);
    }
}

チェッカー パターンを実行するときにコーディングする必要がある 4 つの状況があります。

  1. ((i % 2) == 1) && ((j % 2) == 1) //どちらも奇数
  2. ((i % 2) == 1) && ((j % 2) == 0) //奇数行、偶数列
  3. ((i % 2) == 0) && ((j % 2) == 1) //偶数行、奇数列
  4. ((i % 2) == 0) && ((j % 2) == 0) //両方偶数

ここで間違ったのは、Row AND Column を同時にチェックしていないことです。現在のロジックは次のとおりです。

  • 奇数行
  • それ以外は奇数列
  • 奇数列
  • 偶数列

する必要がある

  • 奇数行かつ奇数列
  • Else は奇数行と偶数列です
  • Else は偶数行と奇数列です
  • Else は偶数行 AND 偶数列
于 2013-03-28T04:15:31.820 に答える