0

好的,所以标题说明了什么,但我正在寻找为迷宫制作各种编辑器。我有一个任务是制作一个迷宫求解器。我通过阅读文件来做到这一点。第一行有行数和列数。之后就是一个符号迷宫来制作迷宫。我跑遍了每个地方,并根据符号制作了一个矩阵,其中的数字代表那里的内容。

For Instance:

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

1111111111111111111111111
1001110000000000000000011
1100010111110111110001111
1101110011111111110001111
1101111000000100000001111
1100000111110111110000011
1101110111110111111111011
1101110111110111111111011
1100110111110111111111011
1001110000000001110000011
1111111111111111100011111

那是我出来的矩阵。现在我已经解决了这个问题,所以这不是问题。但我想要它,所以我可以询问行数和列数,画一个大小的矩形,制作一个全为 0 的矩阵 [行] [列] 大,适合屏幕,根据矩阵对其进行网格化,然后当他们单击矩阵 [0] [0] 的框,它将其更改为 1,因此每个网格框都将其更改为代表矩阵中一个点的框。

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

当然这是我遇到问题的地方,我如何根据行数和列数绘制一个有网格的矩形,然后让它知道他们点击的位置......

任何帮助都会很棒。

编辑:好的,我让它根据给定的行和列绘制迷宫。我让它检测到点击,它可以放在我点击的地方。但它并没有改变整个矩阵,然后重新绘制整个事情。

4

1 回答 1

1

正如您似乎已经解决的那样,您可以使用new运算符制作任何特定大小的迷宫:

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

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

于 2011-03-04T05:51:49.917 回答