我设计了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个。我应该得到两个不倾斜且重叠的矩形。矩形的方向无关紧要。
答案 0 :(得分:0)
我猜想pen.move()方法导致记录笔的方向。在这种情况下,您需要在pen.move()之后重新调整笔的方向,以指向您期望开始绘制矩形的方向。
pen.up();
pen.move(myX, myY);
pen.direction(0)
pen.down();