目录
一、题目
绘制如图所示图形,中间是半径为120的圆,四周是边长为80的12个菱形。
背景为白色,中间圆为红色轮廓线,不填充
图中菱形的长对角延长线经过圆心
菱形为黑色轮廓线,黄色填充,其中锐角为60度
绘图过程中隐藏画笔,能清晰看到图形绘制过程
二、分析
向前120,左转30°;向前80,右转60°;向前80,右转120°;向前80,右转60°;向前80,右转60,画1/12圆弧。
turtle.penup()抬起画笔,不会画出痕迹,简写turtle.pu()
turtle.pendown()落下画笔,简写turtle.pd()
import turtle as t
t.pu()
#向前120,左转30°
t.fd(120)
t.pd();t.speed(9)#多条指令写一行,用分号隔开
t.color("black","yellow")
t.begin_fill()
t.lt(30)
#向前80,右转60°
t.fd(80)
t.rt(60)
#向前80,右转120°
t.fd(80)
t.rt(120)
#向前80,右转60°
t.fd(80)
t.rt(60)
#向前80
t.fd(80)
t.end_fill()
#右转60,画1/12圆弧
t.rt(60)
t.circle(120,360/12)
t.done()
运行结果
接下来需要将这段代码改进一下执行12次
开始之前隐藏画笔turtle.hide()
圆轮廓为红色turtle.color("red")
每1/12开始画之前调整初始角度,循环12次
三、完整代码展示
import turtle as t
t.hideturtle()#全程隐藏画笔
t.pu();t.pensize(4)
#向前120,左转30°
t.fd(120)
t.pd();t.speed(9)#多条指令写一行,用分号隔开
for x in range(12):
t.color("black","yellow")
t.begin_fill()
t.seth(x*30)#调整每次画之前角度0,30,60...
t.lt(30)
#向前80,右转60°
t.fd(80)
t.rt(60)
#向前80,右转120°
t.fd(80)
t.rt(120)
#向前80,右转60°
t.fd(80)
t.rt(60)
#向前80
t.fd(80)
t.end_fill()
#右转60,画1/12圆弧
t.color("red")#圆轮廓为红色
t.rt(60)
t.circle(120,360/12)
t.done()
运行结果