我正在编写一个程序,它接受用户的坐标并在屏幕上用星星(*)绘制一些形状
例如矩形,即矩形=100,150,50,50 作为 x,y,width,height。我该怎么做??
我认为本教程对您非常有用:http: //download.oracle.com/javase/tutorial/2d/geometry/primitives.html
什么是“星星绘画”?如果这是具有等宽字体的文本模式,您需要将其打印成星形的水平线,计算正确的长度。对于矩形,这很容易,对于三角形,就不太容易了,五边形只是矩形和一些三角形的组合。请参阅Bresenham 算法以获取灵感。
另请注意,文本模式分辨率很差;标准终端窗口只有 80 个字符宽,你几乎不能让它比 200-300 个字符宽得多,所以正确的舍入很重要。
以下来自javadoc
x - 此矩形左上角的新 x 坐标 y - 此矩形左上角的新 y 坐标
除非您指的是 GUI,否则 Y 坐标可以是您必须“跳过”的行数,而 x 坐标类似于您在行中输入的空格数。
所以基本上,x = 2 和 y = 3 意味着你必须向下走 3 行并向右移动 2 个空格。
如果它只是矩形,那么将以下内容放入您的绘画方法中应该可以工作......
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。
一般来说,尽量避免'星图'......