2011-03-04 134 views
0

好,所以标题告诉很少,但我正在寻找一个迷宫编辑器。我有一个任务来制作迷宫求解器。我通过阅读文件来完成这项工作。第一行有行数和列数。之后,迷宫就成了迷宫。我跑遍了每个地方,并根据符号制作了一个表示有什么的数字的矩阵。Java动态矩阵

For Instance: 

11 25 
************************* 
* ***     ** 
** * ***** ***** **** 
** *** ********** **** 
** ****  *  **** 
**  ***** *****  ** 
** *** ***** ********* ** 
** *** ***** ********* ** 
** ** ***** ********* ** 
* ***   ***  ** 
***************** ***** 

1111111111111111111111111 
1001110000000000000000011 
1100010111110111110001111 
1101110011111111110001111 
1101111000000100000001111 
1100000111110111110000011 
1101110111110111111111011 
1101110111110111111111011 
1100110111110111111111011 
1001110000000001110000011 
1111111111111111100011111 

这是我的矩阵出来。现在我已经解决了这个问题,所以这不是问题。但是我想要它,所以我可以问行数和列数,绘制一个矩形的大小,使所有0的矩阵[行] [列]大,适合屏幕,基于矩阵的网格,然后当他们点击矩阵[0] [0]的框,它将矩阵中的一个点替换为1,然后每个表示矩阵中的一个网格框。

这样我就可以让他们制作一个迷宫,然后让程序解决它,或者他们可以保存它。

当然,这是在我有问题,我怎么绘制具有基于行和列的数量然后做出,所以我知道他们点击一个网格中的矩形......

任何帮助都会很棒。

编辑:好的我已经绘制了基于行和列给出的迷宫。我有它检测到点击,它可以放在我点击的地方。但它不会改变整个矩阵,然后再重新绘制整个矩阵。

回答

1

你似乎已经制定出来,你可以使用new运营商做出任何特定大小的迷宫:

int[][] maze = new int[rows][cols]; 

我不知道你用的是什么用户界面包,但大部分工作沿着相同的路线:屏幕是一定数量的像素宽和高,并且您通过指定开始和结束的像素坐标来画线。同样,当用户点击时,您将获得点击坐标(以像素为单位)。您可以通过获取屏幕的整体宽度和高度并除以迷宫的行数和列数来确定您的方框的大小。用这些尺寸画出迷宫。您还可以通过以点为单位的(x,y)坐标来确定单击的行和列,并将x除以框宽度,y除以框高(可能在调整开始绘制迷宫的位置之后,如果它不在像素(0,0))。

+0

嗯我试过类似的东西,但我仍然不能使它工作。窗口的大小设置为500,500开始,迷宫从0,0开始绘制,然后超过列数量和下行数量。使用大小为windowWidth/columns和windowHeight/rows的框。 – Tempus35 2011-03-04 05:55:35

+0

什么不工作?您可能需要稍微调整公式以考虑框边界的宽度。 – 2011-03-04 16:57:38