2013-12-15 65 views
2

我目前正在研究库存系统,但是我遇到问题,应该如何绘制它。绘制矩形多维数组

我有矩形看起来像这样的阵列:

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); 
} 

所以不知何故,我想移动Y33下来的时候[i]达到6以及重置x位置。

我确定这很简单,但我无法弄清楚,所以任何帮助都会为我节省很多时间。

回答

2

首先开始通过创建一个多维数组,不断

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

,那么你就具有双重嵌套初始化循环

for (int x = 0; x < 6; x++) 
{ 
    for (int y = 0; y < 4; y++) 
    { 
     Inventoryslots[x, y] = new Rectangle((x * Width) + constant, 
      (y * Height) + constant, 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)

+0

基本上,x * 33将成为您在x上的位置并且y * 33是将成为你在y上的位置,如果你看不到你的盒子,尝试添加一个常数,如:(x * 33)+ 100 –

+1

感谢您的快速响应,它的工作完美!我不知道你可以创建多维数组。再次感谢! :D – Iskalder

+0

没问题!我试图找到一份工作,所以请给我一个upvote,如果你可以;) –