【问题标题】:Drawing a rectangle multidimensional array绘制一个矩形多维数组
【发布时间】:2013-12-15 17:46:14
【问题描述】:

我目前正在研究一个库存系统,但是我在弄清楚我应该如何绘制它时遇到了问题。

我有一个矩形数组,如下所示:

Rectangle[] Inventoryslots = new Rectangle[24]; // 24 slots

现在我想绘制一个 6*4 列、宽度为 6 个槽、高度为 4 个槽的槽。

我是这样画它们的,直到我弄清楚应该如何在 y 上画它们:

for (int i = 0; i < Inventoryslots.Length; i++)
{      
    Inventoryslots[i] = new Rectangle(i * 33, 0, box.Width, box.Height);

    spriteBatch.Draw(box, Inventoryslots[i], Color.White);
}

所以我想在[i] 达到 6 时将 y33 向下移动并重置 x 位置。

我确信这很简单,但我就是想不通,所以任何帮助都会为我节省很多时间。

【问题讨论】:

    标签: c# xna drawing rectangles inventory


    【解决方案1】:

    首先创建一个多维数组和常量

    const int offset = 100; 
    Rectangle[,] Inventoryslots = new Rectangle[6, 4]; 
    

    然后您将使用双重嵌套的 for 循环进行初始化

    for (int x = 0; x < 6; x++)
    {
        for (int y = 0; y < 4; y++)
        {
            Inventoryslots[x, y] = new Rectangle((x * Width) + offset, 
                 (y * Height) + offset, Width, Height); 
        }
    }
    

    然后你会做一个双重嵌套的for循环来遍历它们

    for (int x = 0; x < 6; x++)
    {
        for (int y = 0; y < 4; y++)
        {
           spritebatch.draw(texture, Inventoryslots[x, y], Color.White); 
        }
    }
    

    至少我认为这就是你要问的,让我知道它是如何工作的。该常量可用于移动整个矩形数组(如果要单独操作 X 和 Y,请使用 vector2)

    【讨论】:

    • 基本上 x * 33 将成为您在 x 上的位置,y * 33 将成为您在 y 上的位置,如果您看不到您的框,请尝试添加一个常数就是这样:(x * 33) + 100
    • 感谢您的快速响应,完美运行!我不知道您可以通过这样做来创建多维数组。再次感谢! :D
    • 遗憾的是我做不到,我需要 15 个代表我只得到了 6 个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多