0

私はこのコードを持っています:

            int tX = 1;

            for (int y = 0; y < ROWS; y++)
            {
                for (int x = 0; x < tX; x++)
                {
                    Tile t = new Tile()
                    {
                        Texture = tile,
                        Position = new Microsoft.Xna.Framework.Point(x, y),
                        Troops = rnd.Next(1, 4),
                        OwnedByPlayerIndex = 0
                    };
                    t.Tap += tile_Tap;

                    if (t.Position.Y < ROWS)
                        tiles.Add(t);
                }
                tX += 2;

                tX = (int)MathHelper.Clamp(tX, 0, COLS);
            }

そして、私がやろうとしているのは、長方形内にマップを作成し、行と列の数でマップを制限することです。

しかし、フォローアップせず、最後のコーナーを終了するため、機能せず、不完全なままになります

ここに画像の説明を入力してください

4

1 に答える 1

1

そこには冗長なロジックがいくつかあるように見え、内部ループはすべての列を反復していません。長方形全体を塗りつぶしたい場合は、tX はまったく必要ありません。例:

for (int y = 0; y < ROWS; y++)
{
    for (int x = 0; x < COLS; x++)
    {
        Tile t = new Tile()
        {
            Texture = tile,
            Position = new Microsoft.Xna.Framework.Point(x, y),
            Troops = rnd.Next(1, 4),
            OwnedByPlayerIndex = 0
        };
        t.Tap += tile_Tap;
        tiles.Add(t);
    }
}

さらに、スクリーンショットから、一番下の行全体が塗りつぶされた場合、下の千鳥状のヘックスが赤い長方形の下部に重なるように見えます. これらの下位ヘクスを追加したくない場合は、条件付きで追加する必要があります。

...
if (y > 0 || 0 == (x & 1))
    tiles.Add(t);
于 2013-01-28T19:26:27.103 に答える