Python turtle模块实战:绘制机器猫的头部

我们之前已经为机器猫的绘制进行了分析,下面我们就来绘制机器猫的头部

head() 函数

在这里,我们定义了一个绘制机器猫大脑袋的函数—— head()。首先,它绘制一个蓝色填充的大圆,表示机器猫的脑袋。然后,在蓝色圆中绘制一个稍小一点的白色填充的圆,表示机器猫的脸庞。 head() 函数的代码如下所示。
def head(): 
    #大圆  
    color("blue","blue")
    penup()
    goto(0,100)
    drawRound(75,True)
    #小圆
    color("white","white")
    penup()
    goto(0,72)
    drawRound(60,True)

首先调用 color() 函数,将画笔的颜色设置为蓝色,将填充的颜色也设置为蓝色。然后调用 penup() 函数,让画笔抬起,不要在画布上留下笔迹。调用 goto() 函数将画笔移动到x坐标为 0、y 坐标为 100 的位置。调用我们在前面创建的自定义函数 drawRound(),绘制一个半径为 75 个像素、用蓝色填充的圆。

然后再次调用 color() 函数,将画笔的颜色设置为白色,将填充的颜色也设置为白色。然后调用 penup() 函数,让画笔抬起,不要在画布上留下笔迹。调用 goto() 函数将画笔移动到 x 坐标为 0、y 坐标为 72 的位置。调用 drawRound() 函数,绘制一个半径为 60 个像素、用白色填充的圆。

调用这个 head() 函数来看一下执行效果,如图 1 所示。

head()函数
图 1

eyes() 函数

接下来,我们定义 eyes() 函数,用来绘制机器猫的眼睛。首先,我们绘制两个边框为黑色并用白色填充的大圆,表示机器猫的两只眼睛。然后在每个大圆中画一个用黑色填充的圆,并且在这个黑圆中再绘制一个更小的用白色填充的圆,它们表示机器猫的眼球。
def eyes():
    #左眼眶   
    color("black","white")   
    penup()
    goto(-15,80)
    drawRound(17,True)
    #右眼眶
    color("black","white")   
    penup()
    goto(19,80)
    drawRound(17,True)
    #左眼珠 
    color("black","black")
    penup()
    goto(-8,70)
    drawRound(6,True)   
    color("white","white")
    penup()
    goto(-8,66)
    drawRound(2,True)
    #右眼珠
    color("black","black")
    penup()
    goto(12,70)
    drawRound(6,True)   
    color("white","white")
    penup()
    goto(12,66)
    drawRound(2,True)

首先绘制机器猫的左眼眶。调用 color() 函数,将画笔的颜色设置为黑色,将填充的颜色设置为白色。然后调用 penup() 函数,让画笔抬起,不要在画布上留下笔迹。调用 goto() 函数将画笔移动到 x 坐标为 −15、y坐标为 80 的位置。调用自定义函数 drawRound(),绘制一个半径为 17 个像素、用白色填充的圆。

然后绘制右眼眶,这段代码和绘制左眼的代码基本一致,只是传入 goto() 函数的参数不一样,要将画笔移动到 x 坐标为 19、y 坐标为 80 的位置。

接下来绘制左眼珠和右眼珠。还是调用 color() 函数,设置画笔和填充的颜色,移动画笔,然后绘制圆。

调用这个 eyes() 函数来看一下效果,如图 2 所示。


图 2

nose() 函数

接下来,我们定义 nose() 函数,来绘制鼻子。鼻子很简单,就是一个红色的圆。nose 函数的代码如下所示。
def nose():    
    color("red","red")
    penup()
    goto(0,40)
    drawRound(7,True)
调用 color 函数,将画笔和填充的颜色设置为红色。然后调用 penup() 函数,让画笔抬起,先不要在画布上留下笔迹。调用 goto() 函数将画笔移动到 x 坐标为 0、y 坐标为 40 的位置。调用自定义函数 drawRound(),绘制一个半径为 7 个像素、用红色填充的圆。

调用这个 nose() 函数来看一下绘制效果,如图 3 所示。

nose()函数
图 3

mouth() 函数

接下来,我们定义一个 mouth() 函数,用来绘制机器猫的嘴巴。它会先绘制一条弧线,表示嘴形,然后再绘制一条竖线,表示机器猫的“人中”。mouth() 函数的代码如下所示。
def mouth():   
    #嘴
    color("black","black")
    penup()
    goto(-30,-20)
    pendown()
    setheading (-27)
    circle(70,55)
    #人中
    penup()
    goto(0,26)    
    pendown()
    goto(0,-25)

调用 color 函数,将画笔和填充的颜色都设置为黑色。然后调用 penup() 函数,让画笔抬起,先不要在画布上留下笔迹。调用 goto()函数将画笔移动到 x 坐标为 −30、y坐标为 −20 的位置。然后调用 pendown() 函数落下画笔。调用 setheading(-27),设置小海龟启动时运动的方向。调用 circle(70,55) 绘制一条弧线,表示机器猫的嘴巴。

接下来,调用penup() 函数,让画笔抬起,先不要在画布上留下笔迹。调用 goto() 函数将画笔移动到 x 坐标 0、y坐标为 26 的位置。然后调用 pendown() 函数落下画笔。调用 goto(0,-25),来绘制一条直线,表示机器猫的“人中”。

调用这个 mouth() 函数来看一下绘制效果,如图 4 所示。

mouth()函数
图 4

whiskers() 函数

接下来,我们定义了一个 whiskers() 函数,用来绘制胡子。它在机器猫的“人中”的两边,分别绘制3条直线,表示胡须。whiskers() 函数的代码如下所示。
def whiskers():    
    color("black","black")
    #左边中间的胡子
    penup()
    goto(10,5)    
    pendown()
    goto(-40,5)
    #右边中间的胡子
    penup()
    goto(10,5)    
    pendown()
    goto(40,5)
    #左上的胡子
    penup()
    goto(-10,15)    
    pendown()
    goto(-40,20)
    #右上的胡子
    penup()
    goto(10,15)    
    pendown()
    goto(40,20)
    #左下的胡子
    penup()
    goto(-10,-5)    
    pendown()
    goto(-40,-10)
    #右下的胡子
    penup()
    goto(10,-5)    
    pendown()
    goto(40,-10)

还是先调用 color() 函数,将画笔和填充的颜色都设置为黑色。然后调用 penup() 函数,让画笔抬起,先不要在画布上留下笔迹。调用 goto() 函数将画笔移动到指定位置。然后调用 pendown() 函数落下画笔。调用 goto() 函数,绘制一条直线,表示左边第一根胡子。

然后重复类似的动作,绘制剩下的5根胡子。这部分的代码基本上是相同的,只是移动到的坐标位置有所不同,这里就不再赘述。调用 whiskers() 函数来看一下绘制效果,如图 5 所示。

whiskers()函数
图 5