龟使三角形不同的颜色

时间:2015-03-12 08:55:28

标签: python turtle-graphics

大家好我想复制这张图片:

差不多完成了我只有一个问题,三角形应该是黄色的,似乎不起作用。

矿:

代码:

fill(True)
fillcolor('green')
width(3)
forward(200)
left(120)
forward(200)
left(120)
forward(200)

fill(False)


right(180)
forward(100)
right(60)
forward(100)
left(120)




fill(True)
fillcolor('red')
forward(200)
left(120)
forward(200)
left(120)
forward(200)
fill(False)

任何帮助将不胜感激。 (我不能在代码的第二部分添加黄色)

2 个答案:

答案 0 :(得分:1)

据我所知,turtle不支持透明度。绿色三角形将覆盖红色三角形,它们重叠的区域将不会添加"添加"变黄你必须明确地绘制黄色三角形。尝试将其添加到您的代码中:

fill(True)
fillcolor('yellow')
left(120)
forward(100)
left(120)
forward(100)
left(120)
forward(100)
fill(False)

此外,定义函数def triangle(size, color)以减少代码中的重复次数可能是个好主意,例如:像这样:

def triangle(size, color):
    fill(True)
    fillcolor(color)
    for _ in range(3):      
        forward(size)
        left(120)
    fill(False)

然后你只需要定位乌龟并调用该函数绘制一个三角形。

答案 1 :(得分:0)

虽然乌龟不支持透明度,但我们仍然可以在Python中进行一些混色而不是硬编码"黄色":

from operator import add

RED = (1.0, 0.0, 0.0)
GREEN = (0.0, 1.0, 0.0)
SUM = map(add, RED, GREEN)

这使我们可以选择尝试其他一些原色并看看它们的混合情况。例如:

import turtle
from operator import add

PRIMARY_1 = (1.0, 0.0, 0.0)  # red
PRIMARY_2 = (0.0, 0.0, 1.0)  # blue
SECONDARY_SUM = map(add, PRIMARY_1, PRIMARY_2)

TRIANGLE_SIZE = 200
BORDER_SIZE = 5

STAMP_UNIT = 20
SQRT_3 = 3 ** 0.5

turtle.shape("triangle")
turtle.hideturtle()
turtle.penup()
turtle.right(30)  # realign triangle
turtle.fillcolor(PRIMARY_1)
turtle.shapesize(TRIANGLE_SIZE / STAMP_UNIT, TRIANGLE_SIZE / STAMP_UNIT, BORDER_SIZE)
turtle.stamp()

turtle.fillcolor(PRIMARY_2)
y_offset = TRIANGLE_SIZE * SQRT_3 / 4
turtle.goto(TRIANGLE_SIZE / 4, -y_offset)
turtle.stamp()

turtle.shapesize(TRIANGLE_SIZE / STAMP_UNIT / 2, TRIANGLE_SIZE / STAMP_UNIT / 2, BORDER_SIZE)
turtle.fillcolor(SECONDARY_SUM)
turtle.sety(turtle.ycor() + 2 * y_offset / 3)
turtle.stamp()

turtle.exitonclick()

显然,这种方法过于简单化,对于真正的混合,代码需要更加复杂。但是由于缺乏透明度,我们不必完全放弃硬编码。

<强>输出

enter image description here