Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在图像中查找迷宫走廊的大小_Java - Fatal编程技术网

Java 在图像中查找迷宫走廊的大小

Java 在图像中查找迷宫走廊的大小,java,Java,因此,我正在构建一个解决迷宫的应用程序,其中一个选项是上传一张图片,它将解决这个问题。但是,在解决迷宫时,输出将如下所示 我想弄清楚如何让我的程序找到合适的走廊大小,并使解决方案看起来像这样,同时通道完全满了 我的数据被放入一个数组中,1代表墙,0代表空格。到目前为止,我一直在考虑寻找1之间的最小距离,但这在圆形迷宫和在迷宫上写字时遇到了问题。我曾考虑过填充墙与墙之间的距离,但在交叉口处遇到了问题 我正在使用 image.setRGB(x, y, Color.RED.getRGB());

因此,我正在构建一个解决迷宫的应用程序,其中一个选项是上传一张图片,它将解决这个问题。但是,在解决迷宫时,输出将如下所示

我想弄清楚如何让我的程序找到合适的走廊大小,并使解决方案看起来像这样,同时通道完全满了

我的数据被放入一个数组中,1代表墙,0代表空格。到目前为止,我一直在考虑寻找1之间的最小距离,但这在圆形迷宫和在迷宫上写字时遇到了问题。我曾考虑过填充墙与墙之间的距离,但在交叉口处遇到了问题

我正在使用

image.setRGB(x, y, Color.RED.getRGB());
图像是一个缓冲图像


我真的没有主意了,不知道如何解决这个问题。如果有任何帮助,我将不胜感激

网格中的每个正方形都有一定的大小。说
wsq
*
hsq
表示“正方形的宽度乘以正方形的高度”

如果您的
(x,y)
,您可以通过将
x
除以
wsq
y
除以
wsh
来找到它的平方:

int xsq = x / wsq;
int ysq = y / ysq;
要涂成红色的区域将从
(xsq*wsq,ysq*hsq)
开始,并具有宽度/高度
(wsq,hsq)
。你可以把它涂成红色,但这意味着你要在墙上画画。因此,您必须根据墙的大小调整要用红色填充的区域。如果墙都有两个像素厚,则需要在正方形的x和y坐标中添加1,并从宽度和高度中减去2

您可以在每次调用
image.setRGB
时再次填充它(使用
Graphics2D
),或者您可以记住已填充的方块


注意:由于您使用的是常规大小的正方形,您还可以优化迷宫求解算法,使其在大小为
(wsq,hsq)
的正方形网格中工作,而不是在图像中的单个像素中工作。

输出将如下所示。
-那么您已经知道如何求解迷宫了<代码>我的数据被放入一个数组中,1代表墙,0代表空格——因此每个1/0代表图像中的一个单元格。因此,您可以保留点的阵列列表,以表示要包含在解决方案中的每个单元。然后遍历ArrayList并使用fillRect(…)方法绘制ArrayList中的每个单元格。为什么要直接绘制到图像的缓冲区中?为什么不提取图形2d对象,设置其笔划并用它绘制?@hovercraffullofeels,因为这仍然无法解决知道我需要做一个多大的笔划的问题