我有这段代码:
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);
}
我想要做的是在矩形中创建一个地图,按行数和列数限制地图。
但它不起作用,因为它没有跟进并完成最后一个角落,使其不完整
答案 0 :(得分: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);