Попытка создать диагональные узоры, используя графику - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь создать диагональный узор, используя графику, но заполнена только половина рисунка.Я также пытаюсь сделать так, чтобы один и тот же шаблон заполнял все 500x500, но понятия не имею, как.РЕДАКТИРОВАТЬ: Извините, я не имею в виду, что все это заполнено, как из (0-100,500) имеет шаблон линии, а затем (100-200,500) пусто и т. Д.

from graphics import *

def patchwork():
    win = GraphWin('Lines test',500,500)
    for x in range(0,101,20):
        line = Line(Point(x,0), Point(100,100-x))
        line.setFill('red')
        line.draw(win)

     for x2 in range(101,0,-20):
        line2 = Line(Point(100,0+x2), Point(x2,100))
        line2.setFill('red')
        line2.draw(win)

Я ожидалшаблон, чтобы полностью заполнить 100x100 диагональными линиями, но заполняется только у него.

1 Ответ

0 голосов
/ 02 января 2019

Вы можете сделать это, нарисовав четыре набора линий внутри одного цикла for, как показано ниже.Код написан в терминах размера окна L, поэтому при необходимости его можно легко изменить.

from graphics import *

def patchwork():
    L = 500;
    win = GraphWin('Lines test',L,L)
    for s in range(0,L+1,20):
        line1 = Line(Point(s,0), Point(L,L-s))
        line1.setFill('red')
        line1.draw(win)

        line2 = Line(Point(L,s), Point(s,L))
        line2.setFill('red')
        line2.draw(win)

        line3 = Line(Point(s,L), Point(0,L-s))
        line3.setFill('red')
        line3.draw(win)

        line4 = Line(Point(0,s), Point(s,0))
        line4.setFill('red')
        line4.draw(win)

Обновлен код для создания кусочного шаблона:

from graphics import *

def patchwork():
    L = 500;
    W = 100;
    f = L/W;
    win = GraphWin('Lines test',L,L)
    for xL in [0,200,400]:
      xR = xL + W;
      for s in range(0,W+1,20):
          line1 = Line(Point(xL + s,0), Point(xL,f*s))
          line1.setFill('red')
          line1.draw(win)

          line2 = Line(Point(xL + s,0), Point(xR,L - f*s))
          line2.setFill('red')
          line2.draw(win)

          line3 = Line(Point(xL + s,L), Point(xL,L - f*s))
          line3.setFill('red')
          line3.draw(win)

          line4 = Line(Point(xL + s,L), Point(xR,f*s))
          line4.setFill('red')
          line4.draw(win)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...