Python库默认的绘图circle函数绘制的圆是以当前海龟箭头方向左侧为圆心方向,y轴向上半径r的距离为圆心,绘制一个圆,这个方法不好用,每次都要算。学生课后问,是否可以使用圆心 半径的方法绘制,但是没有函数,只能自己封装一个。

思路如下:

(1)函数的参数(x,y,r)分别为圆心的坐标x和y,半径r。问题来了,可以用goto(X,Y)去圆心,但是导致绘图的圆心在y轴向上移动了r的距离,因此需要去goto(X,Y-r),这样就消除了半径的影响。

(2)箭头去圆心的时候,不知道箭头的方向,因此需要对海龟的箭头方法复位为0度,利用seth(0)函数。

(3)圆如果需要填充颜色,可以利用rgb模式传递颜色。

效果如下,代码如下:

彩色同心圆

import turtleimport random#以(x,y)为圆心,画半径为r的圆,颜色为(cr,cg,cb)def mycircle(x,y,r,cr,cg,cb):    mytl1.penup()    mytl1.goto(x,y-r)    mytl1.seth(0)    mytl1.pendown()    mytl1.color(cr,cg,cb)    mytl1.begin_fill()    mytl1.circle(r)    mytl1.end_fill()mytl1=turtle.Turtle()turtle.tracer(0) #画面顺完成turtle.colormode(255) #颜色模式255的,RGB值# mytl1.speed(0) #画面速度最快# mytl1.hideturtle() #隐藏海龟箭头mytl1.shape("turtle") #海龟形状for i in range(10,0,-1):    cr=random.randint(0,255) #随机颜色    cg = random.randint(0, 255)    cb= random.randint(0, 255)    mycircle(60,60,i*20,cr,cg,cb)mytl1.screen.mainloop()