为什么不绘制直线矩形?

时间:2019-10-31 21:15:28

标签: java loops drawing

  1. 设计具有以下属性的Rectangle类。
  2. 实现您的Rectangle类设计。
  3. 尝试使用默认构造函数和可以接受x和y坐标,矩形长度和宽度的构造函数的矩形

我设计了Rectangle类(如下所示),并且在运行Runner类时,应该得到两个直的/重叠的矩形。相反,我的一个矩形很好,另一个矩形是倾斜的。

我尝试设置“ pen.direction(0);”为了解决该问题,但没有效果。

原始矩形类:

import gpdraw.*;

public class Rectangle {

    private double myX;
    private double myY;
    private double myWidth;
    private double myHeight;
    private static DrawingTool pen;
    private static SketchPad paper;

    public Rectangle() {
        paper = new SketchPad(500,500);
        pen = new DrawingTool(paper);
    }

    public Rectangle(double x, double y, double width, double height) {
        myX = x;
        myY = y;
        myWidth = width;
        myHeight = height;
    }

    public double getPerimeter() {
        return (2*myWidth) + (2*myHeight);
    }

    public double getArea() {
        return myWidth * myHeight;
    }

    public void draw() {
        pen.up();
        pen.move(myX, myY);
        pen.down();
        pen.forward(myWidth);
        pen.turnRight();
        pen.forward(myHeight);
        pen.turnRight();
        pen.forward(myWidth);
        pen.turnRight();
        pen.forward(myHeight);
    }
}

亚军类:

import gpdraw.*;

public class RectangleRunner {

    public static void main(String[] args) {
        new SketchPad(500,500);
        Rectangle rectA = new Rectangle();
        rectA.draw();
        Rectangle rectB = new Rectangle(0, -80, 400, 160);
        rectB.draw();
        Rectangle rectC = new Rectangle(100, -100, 20, 300);
        rectC.draw();
    }
}

当我从Runner类运行程序时,我得到2个矩形,如果矩形是倾斜的,则为1个。我应该得到两个不倾斜且重叠的矩形。矩形的方向无关紧要。

1 个答案:

答案 0 :(得分:0)

我猜想pen.move()方法导致记录笔的方向。在这种情况下,您需要在pen.move()之后重新调整笔的方向,以指向您期望开始绘制矩形的方向。

pen.up();
pen.move(myX, myY);
pen.direction(0)
pen.down();