使用Turtle不只可以画线条,也可以将画出的封闭线条进行填充。
-设定填充色:fillecolor(r, g, b)
-开始填充:begin_fill()
-结束填充:end_fill()
把上次画图的练习代码,先初始化一个填充颜色。然后,在画每个图形绘制之前使用begin_fill()以及绘制之后使用end_fill()。这样就能得到一个填充效果。这里只选择填充右上角和左下角的图形。
import turtle as t
import random as r
def pink():
color = (1, r.random(), 1)
return color
def randomrange(min, max):
return min + (max- min)*r.random()
def moveto(x, y):
t.penup()
t.goto(x, y)
t.pendown()
def heart(r, a):
factor = 180
t.seth(a)
t.circle(-r, factor)
t.fd(2 * r)
t.right(90)
t.fd(2 * r)
t.circle(-r, factor)
t.setup(800, 800, 200, 200)
t.speed(9)
t.pensize(1)
t.penup()
for i in range(20):
t.goto(randomrange(-300, 300), randomrange(-300, 300))
t.begin_fill()
t.fillcolor(pink())
heart(randomrange(10, 50), randomrange(0, 90))
t.end_fill()
moveto(400, -400)
t.done()
画一组随机分布,随机大小和不同色调的心形。
import turtle as t
import random as r
def randomcolor():
color = (r.random(), r.random(), r.random())
return color
def pink():
color = (1, r.random(), 1)
return color
def randomrange(min, max):
return min + (max- min)*r.random()
def moveto(x, y):
t.penup()
t.goto(x, y)
t.pendown()
def heart(r, a):
factor = 180
t.seth(a)
t.circle(-r, factor)
t.fd(2 * r)
t.right(90)
t.fd(2 * r)
t.circle(-r, factor)
# set canvas dimension
t.setup(800, 800, 200, 200)
t.speed(9)
t.pensize(1)
t.pencolor(randomcolor())
t.fillcolor(randomcolor())
t.penup()
for i in range(20):
t.goto(randomrange(-300, 300), randomrange(-300, 300))
t.begin_fill()
t.fillcolor(pink())
heart(randomrange(10, 50), randomrange(0, 90))
t.end_fill()
moveto(400, -400)
t.done()