根据列表大小显示对象

时间:2017-02-16 16:37:34

标签: c# wpf

我正在写一个俄罗斯方块翻拍,我在显示我的块时遇到了一些问题。 所以基本上我将所有正方形(矩形)存储在二维数组中(例如[0,0]是col = 0,row = 0的矩形)并且我改变它们的可见性属性来显示/隐藏它们。我将要显示的块存储在List中。这是我的方法,它假设显示当前不移动的矩形(硬编码为4个矩形只是为了显示它是如何工作的):

        public void DisplayStationary(List<int> stationaryBlocks)
    {
        rectangles[stationaryBlocks[0], stationaryBlocks[1]].Visibility = Visibility.Visible;
        rectangles[stationaryBlocks[2], stationaryBlocks[3]].Visibility = Visibility.Visible;
        rectangles[stationaryBlocks[4], stationaryBlocks[5]].Visibility = Visibility.Visible;
        rectangles[stationaryBlocks[6], stationaryBlocks[7]].Visibility = Visibility.Visible;
  }

当我只显示4个矩形(列表中的8个项目)时,这就是它的样子,但我希望它随着块列表的增长而动态变化。例如,要显示8个矩形,列表中将有16个项目,依此类推。

有关如何更改方法的任何提示?

1 个答案:

答案 0 :(得分:1)

只需将此用于Display(List<int> blocks)方法

的内部
for(var i = 0; i < stationaryBlocks.Count(); i=i+2;) {
    // don't use i++ for "second" block as that is assignment and will mess up the loop
    rectangles[blocks[i], blocks[i+1]].Visibility = Visibility.Visible;
}