Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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_Graphics2d - Fatal编程技术网

Java将字符转换为二维图形

Java将字符转换为二维图形,java,graphics2d,Java,Graphics2d,我打开一个包含迷宫的文本文件,其中包含#和空格。其中,哈希标记表示“墙”,空格是可以移动的区域 目前,我已打开该文件并将所有内容存储在2d数组中,以便控制台以文本文件的格式打印出来 我要完成的下一个阶段是,如果char是散列标记,则用深灰色填充矩形,如果是空格,则用白色填充矩形。由于某种原因,目前迷宫正在出现,但看起来非常小 我不知道我是否采取了正确的方法,但我正在尝试修改我的方法,而不是创建另一个方法 基本上,我想用我的迷宫填满整个600x400,而不是这么小。我认为设置矩形的大小可以实现这一

我打开一个包含迷宫的文本文件,其中包含#和空格。其中,哈希标记表示“墙”,空格是可以移动的区域

目前,我已打开该文件并将所有内容存储在2d数组中,以便控制台以文本文件的格式打印出来

我要完成的下一个阶段是,如果char是散列标记,则用深灰色填充矩形,如果是空格,则用白色填充矩形。由于某种原因,目前迷宫正在出现,但看起来非常小

我不知道我是否采取了正确的方法,但我正在尝试修改我的方法,而不是创建另一个方法

基本上,我想用我的迷宫填满整个600x400,而不是这么小。我认为设置矩形的大小可以实现这一点

我尝试的是:

public static void mazeFrame() {
    JFrame f = new JFrame("Maze");
    f.setSize(400, 600);
    f.setLocationRelativeTo(null);
    f.add(new Exercise4());
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
}

但我的输出是


您没有缩放迷宫

 g.drawRect(j,i, 50,50);
j
i
的值都从0开始,并递增1。
因此,您的50x50块重叠

如果添加比例因子,迷宫会更大:

 g.drawRect(xScale * j, yScale * i, 50,50);
由于您打算使用50x50块,因此
xScale
yScale
的正确值应为50。 您可以从那里继续使用:

 g.drawRect(xScale * j, yScale * i, xScale, yScale);

一旦你有了工作,你应该看看类,这将允许你更多的选择。但那是以后的事。

我明白了,现在让我们假设我的迷宫文件变大了,我的规模仍然很大,这意味着它将切割我迷宫的一部分。这是否意味着我需要自动增加窗口大小?有没有一种方法,而不是自己定义大小?@godlypython您可以自己计算比例因子(例如屏幕宽度/迷宫宽度),或者只使用滚动窗格,即仅显示迷宫的可见部分。为了保持一致性,我会使用一个适合大多数迷宫的标准比例因子,对于任何太大的迷宫(或者你定义了一个最大迷宫大小),我会使用一个滚动窗格。@godlypython不幸的是,你必须自己定义大小。另一种方法是把迷宫放在一个盒子里。好的,谢谢。我目前的做法是,它取代了hashtag和spacings。如果我需要在顶部的某个位置放置一个圆,Java 2D允许形状重叠吗?@godlypython你可以在其他东西上画一些东西。我想圆圈代表“玩家”?如果这个圆圈要移动,您将需要查看如何在Java中设置动画。搜索词“Java”和“animation”应该让你开始了。我强烈建议不要在读取文件的同时进行绘画。从文件中读取迷宫一次。使用
paintComponent
从其在内存中的表示绘制迷宫。请记住,每当您在窗口上移动其他窗口、调整大小等时,都会发生许多重绘事件。@realpoint这是我最初的想法,但我不确定如何将单元格i、j值等从方法中获取到“paintComponent”方法。迷宫应该在类中的字段中,而不是在局部变量中。
 g.drawRect(xScale * j, yScale * i, xScale, yScale);