因此,我正在构建一个用于解决迷宫的应用程序,其中一种选择是上传图片并将其解决。但是,解决了迷宫问题后,输出将如下所示。
我想弄清楚如何使我的程序找到合适的走廊尺寸,并使路径完全填满,使解决方案看起来像这样
我的数据被放入一个数组,其中1代表壁,0代表空格,例如this。到目前为止,我已经考虑过尝试找到1之间的最小距离,但这会遇到圆形迷宫和在迷宫上书写的问题。我曾考虑过要填充墙之间的距离,但是在交叉路口会遇到问题。
我正在使用
绘制图像image.setRGB(x, y, Color.RED.getRGB());
,图像为BufferedImage。
我真的是个主意,不知道如何解决这个问题,将不胜感激。
答案 0 :(得分:1)
网格中的每个正方形都有一定的大小。用`int iRow = cRMService_FuncLibrary.verifyValueExistsInADFTable("{{obj.CRMFunc_Service_OR.ADFTableMassUpdateMRU}}", sFieldValue, 0, "AssignedTo MRU ADF Table");`
* wsq
来表示“正方形的宽度乘以正方形的高度”。
考虑到更细粒度的hsq
,您可以通过将(x, y)
除以x
和wsq
除以y
来找到它在哪个正方形中:
wsh
涂成红色的区域将是int xsq = x / wsq;
int ysq = y / ysq;
,宽度/高度为(xsq * wsq, ysq * hsq)
。您可以将其涂成红色,但这意味着您要在墙壁上涂漆。因此,您必须根据墙壁的大小来调整要用红色填充的区域。如果墙壁都是两个像素厚,则需要在正方形的x和y坐标上加上1,然后从宽度和高度减去2。
现在您每次呼叫(wsq, hsq)
时,都可以用Graphics2D
再次填充它,也可以记住已经填充的正方形。
注意:由于您使用的是常规尺寸的正方形,因此您还可以优化迷宫求解算法,以在大小为image.setRGB
的正方形网格中工作,而不是图像中的单个像素。