创建迷宫场

鲁本纳尔

新成员
已加入
2014年3月22日
留言内容
3
编程经验
Beginner
嗨,我是新来的。我试图创建一个迷宫游戏,在该游戏中,所有用户所做的都是按下鼠标,而AI鼠标则自行运行。我在开始创建该字段时遇到了麻烦。我正在尝试使用2D字符串数组来使字段看起来像这样。请注意,尺寸是动态的,因为它是由用户输入的。
C#:
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
我尝试使用填充有标签的面板,也尝试仅使用一个巨大的面板,但是当我尝试使用数组填充它时,它将继续在同一行中,并且我不知道如何使其在命中后停止面板的边缘。有更有效的方法吗?就像没有小组讨论或我不知道的事情一样?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
您可以只使用一个Label。您可以将单个String分配给从数组构建的Text属性。遍历2D数组通常是通过一对嵌套循环完成的,您可以直接构建String,或者最好使用StringBuilder构建String。您还需要对标签使用固定宽度的字体,以使代表空单元格的空间占用的空间与代表墙壁的空间相同。

另外,您可以在每个单元格中使用带有单独Label的TableLayoutPanel。
 

鲁本纳尔

新成员
已加入
2014年3月22日
留言内容
3
编程经验
Beginner
您可以只使用一个Label。您可以将单个String分配给从数组构建的Text属性。遍历2D数组通常是通过一对嵌套循环完成的,您可以直接构建String,或者最好使用StringBuilder构建String。您还需要对标签使用固定宽度的字体,以使代表空单元格的空间占用的空间与代表墙壁的空间相同。

另外,您可以在每个单元格中使用带有单独Label的TableLayoutPanel。

好的,我能够做到这一点,但是我希望边界用X填充,除了左右两侧分别代表入口和出口的两个随机点之外。我不确定该怎么做

C#:
 Random random = new Random();


            for (int i = 0; i < 70; i++)
            {
                for (int j = 0; j < 70; j++)
                {
                    findout[i, j] = random.Next(1,100);


                }
            }




            string[,] positions = new string[70, 70];
            for (int i = 0; i < 70; i++)
            {
                for (int j = 0; j < 70; j++)
                {
                   if (findout[i, j] < d)              //d is density that the user wants the maze to be filled with X's
                     positions[i, j] = "X"; 
                   else                        positions[i, j] = " ";

                }
            }


            for (int i = 0; i < 25; i++)
            {
                for (int j = 0; j < 25; j++)
                {
                    
                    gridmaze.Text += positions[i, j];


                }
            }
 
Last edited:
最佳 底部