Как нарисовать три квадрата, перекрывающие друг друга? - PullRequest
1 голос
/ 05 августа 2020

Я хочу нарисовать три перекрывающихся квадрата в Python, используя функцию черепахи, подобную этой: [1]: https://i.stack.imgur.com/lhfq2.png

Пока это мой код


    from turtle import *


    # Set up canvas
    setup()
    title('three (3) squares of different colours') 
    speed('fastest') 
    pensize(4)

    # Draw the outline of square
    penup ()
    goto (0,0)
    pendown ()
    color ('black')

    for number in range (4):
    forward(150)
    left(90)
    penup()     

    # Fill square with colour
    goto (0,0)
    color('black', 'yellow')
    pendown()
    begin_fill()

    for number in range (4):
       forward(150)
       left(90)
       end_fill()


    hideturtle ()
    done ()

1 Ответ

1 голос
/ 05 августа 2020

Вместо того, чтобы нарисовать три квадрата, вы нарисовали один и тот же квадрат дважды - один раз закрашенный, другой нет. Вы должны уметь нарисовать эту фигуру с помощью серии простых команд forward(), right(90) и left(90). Наряду с изменениями цвета и запросами на заливку. другой цвет заливки. Вторичной задачей может быть, после первоначального оптимального размещения пера в окне, нарисовать фигуру без повторного поднятия ручки . Это похоже на рисование этой фигуры на бумаге, приподняв карандаш.

from turtle import *

LENGTH = 415
OUTLINE = 10

title('Three (3) squares of different colours')

pensize(OUTLINE)

penup()
goto(-LENGTH/4, LENGTH/4)  # center drawing on the window
pendown()

fillcolor('lime')

for _ in range(2):
    begin_fill()

    forward(LENGTH/2)
    right(90)

    for _ in range(3):
        forward(LENGTH)
        right(90)

    forward(LENGTH/2)

    end_fill()

    fillcolor('red')
    left(90)

left(90)
fillcolor('yellow')
begin_fill()

for _ in range(4):
    forward(LENGTH/2)
    left(90)

end_fill()

hideturtle()
exitonclick()

Просто некоторые идеи. Есть и другие забавные способы подойти к этому рисунку. Например, вместо рисунок можно использовать штамп :

from turtle import *

LENGTH = 415
OUTLINE = 10
CURSOR_SIZE = 20

title('Three (3) squares of different colours')

penup()
shape('square')
shapesize(LENGTH / CURSOR_SIZE, outline=OUTLINE)

goto(LENGTH/4, LENGTH/4)
fillcolor('red')
stamp()

goto(-LENGTH/4, -LENGTH/4)
fillcolor('lime')
stamp()

shapesize(LENGTH / 2 / CURSOR_SIZE)
home()
fillcolor('yellow')
stamp()

hideturtle()
exitonclick()
...