创建Map网格WinForms.... Arrays

fhg3lkii  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(113)

第一篇文章。基本上我正在尝试创建一个基于Winforms中的数组的Map网格。虽然我失败了。这是我到目前为止得到的
问题是它把所有的东西都显示成一种颜色。而我想让它是基于数组的某种颜色。
我认为问题在于for循环中的foreach循环,因为foreach循环在第二个for循环中,它可能会对每个i重复,然后对每个j重复。
但是我太笨了,不知道如何排序。我知道winforms不适合这个,我真的不想重做代码,我只是有点想让这个工作,如果可能的话。
命名空间Test {公共分部类Form 1:表格{ int TILE_SIZE = 64;图10 - 11示出了根据本发明的一个实施例的一种方法的流程图。图10 - 15中的“最大值”列表项= new List();

int[] mapGrid =
    {
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
        1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1,
        1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

};



    public Form1()
    {
        InitializeComponent();
        newTest();
        
    }

    private void newTest()
    {

        for (var i = 0; i < MAP_NUM_ROWS; i++) //
        {

            for (var j = 0; j < MAP_NUM_COLS; j++)

            {
                PictureBox Walls = new PictureBox();
                Walls.Location = new Point(i * TILE_SIZE, j * TILE_SIZE);  
                Walls.Height = TILE_SIZE;
                Walls.Width = TILE_SIZE;
                Walls.BorderStyle = BorderStyle.FixedSingle;



                foreach (int test in mapGrid)

                {

                    if (test == 0)
                    {

                        Walls.BackColor = Color.Red;
                        items.Add(Walls);
                        this.Controls.Add(Walls);


                    }

                    if (test == 1)
                    {

                        Walls.BackColor = Color.Orange;
                        items.Add(Walls);
                        this.Controls.Add(Walls);

                    }
                }

                }

            }

        }
    }
}

enter image description here
我试过使用面板、Flowlayoutpanel和TableLayout面板。问题似乎是循环,我太累了,看不到解决方案。

vwoqyblh

vwoqyblh1#

你不应该在主外循环内的网格上循环。你想

int test = mapGrid[i*MAP_NUM_COLS + j]

即,挑选出与您正在填充的行/列匹配的单元格

相关问题