Почему это не нарисовать прямой прямоугольник? - PullRequest
0 голосов
/ 01 ноября 2019
  1. Разработка класса Rectangle со следующими свойствами.
  2. Реализация дизайна класса Rectangle.
  3. Попробуйте свой прямоугольник как с конструктором по умолчанию, так и с конструктором, который может принимать xи координаты y, длина прямоугольника и ширина

Я разработал класс Rectangle (показан ниже), и при запуске класса бегунка я должен получить два прямых / перекрывающихся прямоугольника. Вместо этого один из моих прямоугольников в порядке, другой наклонен.

Я попытался установить "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();
    }
}

Когда я запускаю программу изв классе бегунов я получаю 2 прямоугольника, один из которых наклонен. Я должен получить два прямоугольника, которые не наклонены и перекрываются. Направление прямоугольников не имеет значения.

1 Ответ

0 голосов
/ 01 ноября 2019

Я предполагаю, что метод pen.move () приводит к записи направления пера. В этом случае вам потребуется переориентировать направление пера после pen.move (), чтобы оно указывало в направлении, в котором вы ожидаете начать рисовать прямоугольник.

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