Заполните указанную c часть треугольников цветами с модулем черепахи - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу заполнить треугольники зеленым цветом, за исключением перевернутых, но он продолжает давать мне ошибки:

import turtle
import time
import random
t = turtle.Turtle()
width = 500
height = 500
Color = {"Purple":"#A46BFF","Aqua":"#56BCE8","Tree":"#5EFF7A","Summer":"#E8A83A"}
def triangle(length,draw):


    if draw==0:
    #draw the triangle
        t.color(Color.get("Aqua", "Tree"))
        for i in range(3):
            t.forward(length)
            t.left(120)
    else:
    #draws 3 triangles
        triangle(length/2,draw-1)
        t.fillcolor('Tree')
        t.begin_fill()
        t.color(Color["Tree"])
        t.fd(length/2)
        triangle(length/2,draw-1)
        t.color(Color["Summer"])
        t.bk(length/2)
        t.left(60)
        t.forward(length/2)
        t.right(60)
        triangle(length/2,draw-1)
        t.color(Color["Purple"])
        t.left(60)
        t.backward(length/2)
        t.right(60)



triangle(150,3)
window = turtle.Screen()
window.exitonclick()

Результат, который я хочу получить:

enter image description here

Было бы неплохо, если бы я мог также изменить цвет треугольника после его отрисовки. Например, он будет продолжать рисовать радужный цвет на линиях после его отрисовки. Прямо сейчас, он изменяется на определенный c цвет, и как только он нарисован, он остается тем же самым. Я попытался импортировать случайный модуль, чтобы рандомизировать словарь цветов.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Было бы неплохо, если бы я мог также изменить цвет треугольника после его прорисовки. - @ Elliot

Я не знаю, как изменить цвет уже нарисованных предметов, кроме как полностью перерисовать их. - @ martineau

Я знаю способ, в определенных пределах:

from turtle import Screen, Turtle
from random import choice

CURSOR_SIZE = 20

COLORS = {"Purple": "#A46BFF", "Aqua": "#56BCE8", "Tree": "#5EFF7A", "Summer": "#E8A83A"}

def triangle(length, draw):
    if draw == 0:  # draw the triangle
        turtle.shapesize(length / CURSOR_SIZE)
        turtle.clone().showturtle()
    else:  # draws 3 triangles
        triangle(length/2, draw-1)

        turtle.left(60)
        turtle.forward(length/2)
        turtle.right(60)

        triangle(length/2, draw-1)

        turtle.right(60)
        turtle.forward(length/2)
        turtle.left(60)

        triangle(length/2, draw-1)

        turtle.backward(length/2)

def recolor():
    color = choice(list(COLORS.values()))

    for turtle in screen.turtles():
        turtle.color(color)

    screen.ontimer(recolor, 1000)

screen = Screen()

turtle = Turtle()
turtle.hideturtle()
turtle.shape('triangle')
turtle.settiltangle(90)
turtle.penup()

turtle.goto(-130, -120)  # roughly center on the screen

triangle(300, 3)

recolor()

screen.exitonclick()

Хитрость в том, что мы не рисуем треугольники, мы делаем у каждого треугольника своя черепаха. Затем мы можем попросить черепах сделать что-то, например, изменить цвет или другие трюки ...

enter image description here

1 голос
/ 26 февраля 2020

Чтобы заполнить треугольники зеленым цветом, вам нужно выполнить заполнение в функции triangle(), когда draw == 0. Обратите внимание, что перевернутые - это просто области, где ничего не нарисовано, а не то, что явно отображается.

def triangle(length, draw):
    if draw == 0:
        # draw the triangle
        t.color(Color["Aqua"])
        t.fillcolor(Color["Tree"])
        t.begin_fill()
        for i in range(3):
            t.fd(length)
            t.left(120)
        t.end_fill()
    else:
        # draws 3 triangles
        triangle(length/2, draw-1)
        t.color(Color["Tree"])
        t.fd(length/2)

        triangle(length/2, draw-1)
        t.color(Color["Summer"])
        t.bk(length/2)
        t.left(60)
        t.forward(length/2)
        t.right(60)

        triangle(length/2, draw-1)
        t.color(Color["Purple"])
        t.left(60)
        t.backward(length/2)
        t.right(60)

Результат:

screenshot of properly filled-in figure

Я не знаю, как изменить цвет уже нарисованных предметов, кроме как полностью перерисовать их.

...