主要内容 #
- 综合应用:参照python -m turtledemo的clock模型,制作自己的时钟
2.时钟的表针(1):表针的注册 #
 上一节课我们完成了时钟钟盘的绘制,本节课我们来完成时钟表针的形状注册以及初始化。事实上关于画笔形状的注册,我们在39课《TURTLE – 函数的应用1》有十分详细的介绍,以下示例我们简单展示了一个分针的动画效果。
上一节课我们完成了时钟钟盘的绘制,本节课我们来完成时钟表针的形状注册以及初始化。事实上关于画笔形状的注册,我们在39课《TURTLE – 函数的应用1》有十分详细的介绍,以下示例我们简单展示了一个分针的动画效果。
import turtle
##################
def mymove(x,y):#定义mymove函数,功能是让turtle画笔移动到指定位置
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
def myregisiter(name, length):#name和length分别表示需要注册表针的名字和大小
    mymove(0,0)
    turtle.penup()#形状注册时我们一般抬起画笔,只需注册相应形状即可
    turtle.hideturtle()#隐藏画笔
    turtle.forward(-length * 0.1)
    turtle.begin_poly()#开始记录多边形
    turtle.forward(length * 1.1)
    turtle.end_poly()#结束记录多边形
    p = turtle.get_poly()#得到多边形,完成注册
    turtle.register_shape(name, p)
##################
turtle.mode('logo')
myregisiter('minhand',100)
turtle.shape('minhand')
turtle.showturtle()#注意我们注册完图形,对turtle画笔是隐藏的,如果使用自己定义的画笔则无需此步
for i in [i for i in range(300) if i%2==0]:#注意循环变量i和列表推导表达式中i的不同
	turtle.setheading(i)
turtle.done()
2.时钟的表针(2):表针的初始化 #
以下示例定义了自己的画笔列表,并完成了画笔的形状设置和初始化。需要注意的是mymove(x,y),frame(radius),myregisiter(name, length)没有给出具体的定义,需要我们自己复制进来
import turtle
##################
'''
def mymove(x,y):#定义mymove函数,功能是让turtle画笔移动到指定位置
def frame(radius):#定义frame函数,该函数有一个参数表示钟盘的半径
def myregisiter(name, length):#name和length分别表示需要注册表针的名字和大小
'''
def inithand(radius):#定义inithand(radius)函数,radius表示钟盘半径大小,返回值是已经初始化好的钟针列表
    myturtle = [turtle.Turtle() for i in range(3)]#钟针画笔列表
    myshape = ["secHand", "minHand", "hourHand"]#钟针画笔名字列表
    for i in range(3):
        myregisiter(myshape[i], radius-10 - i * 20)#注册表针形状,长度秒针>分针>时针
        myturtle[i].shape(myshape[i])#设置表针画笔的形状
        myturtle[i].shapesize(1, 1, i*2)#设置表针粗细
        myturtle[i].setheading(i*90)#初始化钟针的角度时间是6:15,结合钟表想一想为什么是6:15
    return myturtle #返回钟针列表 
##################
turtle.tracer(False)#隐藏图形
radius=100#钟表半径
frame(radius)#钟表表盘
myturtle=inithand(radius)#表针初始化
turtle.tracer(True)#显示图形
turtle.done()