turtle画图实例之 画方形双喜字-自定义函数法
2022-06-22 本文已影响0人
小鱼儿_yzh
效果图:
效果图
动画效果:
自定义函数画双喜字动画效果
分析
这是上版画方形双喜字的升级版。受画圆形双喜字的启发,把程序改成自定义函数的形式来完成。
自定义一个画矩形的函数 draw_jx(x,y,h,w) ,用来当作每一个笔画。
画矩形函数的起笔在左上角。这个程序的关键就是算出每个笔画的起笔坐标位置和矩形的宽度和高度。坐标的计算参照下面的坐标分析图。
本例还是设置了 x,y,a,三个变量。通过改变 x,y 的值可以任意改变喜字在画布上的位置,通过改变 a 的值,可以任意变化喜字的大小。
有了 x,y,a 三个变量,可以考虑再升级一下,把 x,y,a 三个变量的值变成随机数,就可以在画布的随机位置画随机大小的喜字了。
坐标分析图
代码:
from turtle import *
pensize(2)
color('red')
speed(0)
def draw_jx(x,y,h,w): #自定义画矩形函数,从左上角起笔
up()
seth(0)
goto(x,y)
down()
begin_fill()
fd(w)
rt(90)
fd(h)
rt(90)
fd(w)
rt(90)
fd(h)
end_fill()
seth(0)
#定义变量
x = -200
y = 200
a = 20
#画双喜
draw_jx(x+0,y+0,a,11*a)
draw_jx(x,y-2*a,a,11*a)
draw_jx(x+2*a,y+a,5*a,a)
draw_jx(x+8*a,y+a,5*a,a)
draw_jx(x,y-4*a,3*a,a)
draw_jx(x,y-4*a,a,5*a)
draw_jx(x+4*a,y-4*a,3*a,a)
draw_jx(x,y-7*a,a,5*a)
draw_jx(x+6*a,y-4*a,3*a,a)
draw_jx(x+6*a,y-4*a,a,5*a)
draw_jx(x+10*a,y-4*a,3*a,a)
draw_jx(x+6*a,y-7*a,a,5*a)
draw_jx(x,y-9*a,a,11*a)
draw_jx(x+2*a,y-8*a,3*a,a)
draw_jx(x+8*a,y-8*a,3*a,a)
draw_jx(x,y-11*a,3*a,a)
draw_jx(x,y-11*a,a,5*a)
draw_jx(x+4*a,y-11*a,3*a,a)
draw_jx(x,y-14*a,a,5*a)
draw_jx(x+6*a,y-11*a,3*a,a)
draw_jx(x+6*a,y-11*a,a,5*a)
draw_jx(x+10*a,y-11*a,3*a,a)
draw_jx(x+6*a,y-14*a,a,5*a)
ht()