Как исправить случайную длину строки, а также сохранить промежуток между ними - PullRequest
0 голосов
/ 03 июня 2019

Мой код работает очень хорошо. Моя главная проблема заключается в том, как зафиксировать длину случайной линии, а также как сохранить разрыв между всеми четырьмя линиями. Я использую команду Line2D. Одна внешняя коробка, разработанная Rectangle2D, и все 4 линии выполнены внутри внешней коробки. Пожалуйста, помогите мне, как решить эти проблемы?

Я попытался зафиксировать длину строки, но не знаю, как показать случайную позицию, потому что синтаксис Line2D имеет значения X1, Y1, X2, Y2, а в моем коде X1, Y1 получает значения из конечной точки предыдущей строки и X2, Y2 - случайные значения. Следующая строка кодов не является полной программой:

 public void drawLines(Graphics g, int counter, String turnV){
    boolean right=false, left=false;
    RSide = LSide = 0;
    g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);    

    Font font = g.getFont().deriveFont(Font.BOLD, 20.0f);
    g2d.setFont(font);
    g2d.drawString("Qno. "+String.valueOf(counter)+". ", 100, 50);
    g2d.drawString(""+turnV , 400, 50);
    g2d.setStroke(new BasicStroke(3));


    originPT = new Point(500, 200); //POSITION: X1,Y1 which is fixed for first line only
    //FIND OUT THE RANDOM POSITION FOR LINE1 X2,Y2
    randX = RandX();
    randY = RandY();
    endPT = new Point(randX,randY);//POSITION: X2,Y2
    g2d.setColor ( Color.BLUE);
    g2d.draw(new Line2D.Double(originPT, endPT));
    L1Origin = originPT;
    L1End = endPT;

    //2nd line
    randX = RandX();
    randY = RandY();
    originPT = new Point(randX,randY);    //POSITION: X2,Y2
    g2d.setColor ( Color.red);
    g2d.draw(new Line2D.Double(endPT, originPT));    //GET X2,Y2 VALUES FROM LINE1 FOR X1,Y1
    L2Origin = endPT;
    L2End = originPT;

    //3rd line - Destination
    randX = RandX();
    randY = RandY();
    endPT = new Point(randX, randY); //POSITION X2, Y2
    g2d.setColor ( Color.green);
    g2d.draw(new Line2D.Double(originPT, endPT)); //GET X2, Y2 POSITION OF LINE 2 FOR X1, Y1
    L3Origin = originPT;
    L3End = endPT;

    //4th line
    randX = RandX();
    randY = RandY();
    originPT = new Point(randX, randY); //POSITION X2, Y2
    g2d.setColor ( Color.black);
    g2d.draw(new Line2D.Double(endPT, originPT)); //GET X2, Y2 POSITION OF LINE 3 
    L4Origin = endPT;
    L4End = originPT;
}

на следующих изображениях показан вывод моей программы, здесь мне нужна фиксированная длина строки в первом изображении и во втором примере изображения, если она рядом в каждой строке, то это также равный пробел.

Генерация фиксированной линии Создать одинаковый промежуток между всеми

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...