1

我正在编写一个程序,它接受用户的坐标并在屏幕上用星星(*)绘制一些形状

例如矩形,即矩形=100,150,50,50 作为 x,y,width,height。我该怎么做??

4

5 回答 5

1

我认为本教程对您非常有用:http: //download.oracle.com/javase/tutorial/2d/geometry/primitives.html

于 2010-12-20T19:33:55.407 回答
1

什么是“星星绘画”?如果这是具有等宽字体的文本模式,您需要将其打印成星形的水平线,计算正确的长度。对于矩形,这很容易,对于三角形,就不太容易了,五边形只是矩形和一些三角形的组合。请参阅Bresenham 算法以获取灵感。

另请注意,文本模式分辨率很差;标准终端窗口只有 80 个字符宽,你几乎不能让它比 200-300 个字符宽得多,所以正确的舍入很重要。

于 2010-12-20T19:38:07.980 回答
0

以下来自javadoc

x - 此矩形左上角的新 x 坐标 y - 此矩形左上角的新 y 坐标

于 2010-12-21T20:10:40.850 回答
0

除非您指的是 GUI,否则 Y 坐标可以是您必须“跳过”的行数,而 x 坐标类似于您在行中输入的空格数。

所以基本上,x = 2 和 y = 3 意味着你必须向下走 3 行并向右移动 2 个空格。

于 2010-12-21T20:14:31.577 回答
0

如果它只是矩形,那么将以下内容放入您的绘画方法中应该可以工作......

int xIncrement = (int)g.getFont().getStringBounds("*", null).getWidth();  
int yIncrement = (int)g.getFont().getStringBounds("*", null).getHeight(); 
for(int i = y; i < y + height; i += xIncrement)  
    for(int j = x; j < x + width; j += yIncrement)
        g.drawString("*", j, i);  

对于三角形和其他形状,它有点困难,但您可以计算出分隔点的线的梯度,从而获得每条线的初始 x。

一般来说,尽量避免'星图'......

于 2010-12-20T19:46:15.380 回答