带有for循环的不均匀网格
本文关键字:不均匀 网格 循环 for 带有 | 更新日期: 2023-09-27 18:15:00
我的问题是:
我有一个RPG库存,通过两个for循环在网格中绘制物品:
[Update Method]
index = 0;
for (int x = 0; x < 7; x++)
{
for (int y = 0; y < ItemList.Count / 7; y++)
{
ItemList[index].gridLocation = new Point(x, y);
index++;
}
}
*ItemList只是一个BaseItem类的列表。
我希望这段代码是这样绘制网格的:
X X X X X X X
X X X X X X X
X X X X X X X
X X X X X
但是它是这样做的:
X X X X X X X
X X X X X X X
X X X X X X X
截断不大于等于7的结束行
现在当我使用一个项目时(使用一个项目从列表中删除它),它将下一个隐藏项目添加到第三行的末尾。
我很感激任何帮助。谢谢你,
编辑:感谢Nico的帮助,这是我的代码现在的样子:
if (ItemList.Count > 6)
{
for (int index = 0; index < ItemList.Count; ++index)
{
ItemList[index].gridLocation = new Point(index % 7, (int)(index / 7));
ItemList[index].UpdateValues(ScreenLocation, itemSize, LocY);
}
}
else if (ItemList.Count < 7)
{
for (int index = 0; index < ItemList.Count; ++index)
{
ItemList[index].gridLocation = new Point(index, 0);
ItemList[index].UpdateValues(ScreenLocation, itemSize, LocY);
}
}
我发现有一个问题,如果itemList低于7,它不会显示任何项目。上面的代码修复了它。再次感谢!
您可以使用索引进行迭代:
for(int index = 0; index < ItemList.Count; ++index)
ItemList[index].gridLocation = new Point(index % 7, (int)(index / 7));
注意,我颠倒了项目顺序。你的是列式的,现在是行式的。我认为,你的意思是,因为你有一个固定的网格宽度7和一个可变的行数。如果不正确,请留下评论