import turtle as t #导入海龟库命名为t
t.screensize(800,600) #定义画布大小800*600
t.speed(8) #定义画图速度,0最快,0-10之间
def flag(): #定义旗面函数
t.color('red') #定义旗帜画笔颜色,保持和填充一致
t.fillcolor('red') #定义旗帜填充颜色
t.begin_fill() #开始填充
t.pendown() #落笔
for i in range(2): #循环两次,对应矩形长和宽,比例3:2
t.forward(600) #缺省向右600步
t.right(90) #右转90度
t.forward(400) #向前400步
t.right(90) #右转90度
t.end_fill() #结束填充
t.penup() #养成好习惯,结束后抬笔
def zuobiao(): #定义坐标函数
t.color("grey") #坐标颜色“grey”
t.goto(-300,0) #来到旗面左边中心
t.pendown() #落笔
t.forward(600) #画出X轴
t.penup() #抬笔
t.goto(0,-200) #来到旗面下方中心
t.pendown() #落笔
t.goto(0,200) #直接向上走200,不用forward避免转向
t.penup() #结束后抬笔
def wangge(): #定义网格辅助线函数
t.color("grey") #网格线颜色“grey”
y = 200 #在第二象限从上往下画横向网格,y坐标初始200
for i in range(10): #重复10次
t.goto(-300,y) #来到第二象限最左上角
t.pendown() #落笔
t.forward(300) #向右走300步
t.penup() #抬笔
t.fd(-300) #原路返回到最左边
y -= 20 #y坐标减少20,一个小方格的边长
x = -300 #在第二象限从左往右画纵向网格,x坐标初始-300
for i in range(16): #重复15次
t.goto(x,0) #来到x轴最左边
t.pendown() #落笔
t.setheading(90) #设置头朝上画,向上90度,向右0度,向下-90度
t.forward(200) #向上走200步
t.penup() #抬笔
t.fd(-200) #原路返回到x轴
x += 20 #x坐标增加20,一个小方格的边长
t.penup() #结束函数,抬笔
def yuan(x,y,r): #定义辅助圆函数
t.color("blue") #辅助圆蓝色
t.goto(x,y) #来到指定坐标
t.setheading(0) #向右方向
t.pendown() #落笔
t.circle(r,steps = 100) #用circle画圆,steps=100是尽量接近圆
t.penup() #抬笔
def star(x,y,r,h): #画五角星函数,xy中心点座标,r半径,h为朝向
t.penup() #抬笔
t.color("yellow") #画笔颜色“yellow”
t.fillcolor("yellow") #五角星填充颜色“yellow”
ls = [] #定义列表,用来存放五角星初始顶角坐标
t.goto(x,y) #来到五角星中心点
t.setheading(h) #设置朝向
for i in range(6): #5次循环分别找到五角星五个顶点
t.forward(r) #先按照朝向找到向中心的顶点
t.pos() #记录下顶点坐标
ls.append(t.pos()) #把顶点坐标放入列表中
t.forward(-r) #回到五角星中心点
t.right(144) #从朝向第一个顶点右转144度(内角36度)
t.goto(ls[0]) #来到找到的第一个顶点
t.pendown() #落笔开始画五角星
t.begin_fill() #开始填充
for i in range(6): #5次循环分别连接找到的五个顶点
t.goto(ls[i]) #依次连接列表中的顶点
t.end_fill() #结束填充
t.penup() #画笔抬起
t.penup() #开始主程序和调用函数,抬笔
t.goto(-300,200) #来到旗面左上角
flag() #调用旗面函数,画出旗帜
zuobiao() #调用坐标函数,画出x和y轴
wangge() #调用网格辅助线函数,画出第二象限的网格辅助线
yuan(-200,40,60) #调用辅助圆函数,画大五角星的辅助圆
yuan(-100,0,20) #调用辅助圆函数,画最下方小五角星的辅助圆
yuan(-60,40,20) #调用辅助圆函数,画从下往上第二个小五角星的辅助圆
yuan(-60,100,20) #调用辅助圆函数,画从下往上第三个小五角星的辅助圆
yuan(-100,140,20) #调用辅助圆函数,画从下往上第四个小五角星的辅助圆
star(-200,100,60,90) #调用五角星函数,画大五角星
t.goto(-100,20) #来到最下方小五角星中心
h = t.towards(-200,100) #设置朝大五角星中心方向,并赋值给五角星函数的h
star(-100,20,20,h) #调用五角星函数,画最下方小五角星
t.goto(-60,60) #来到从下往上第二个小五角星中心点
h = t.towards(-200,100) #设置朝大五角星中心方向,并赋值给五角星函数的h
star(-60,60,20,h) #调用五角星函数,画从下往上第二个小五角星
t.goto(-60,120) #来到从下往上第三个小五角星中心点
h = t.towards(-200,100) #设置朝大五角星中心方向,并赋值给五角星函数的h
star(-60,120,20,h) #调用五角星函数,画从下往上第三个小五角星
t.goto(-100,160) #来到从下往上第三个小五角星中心点
h = t.towards(-200,100) #设置朝大五角星中心方向,并赋值给五角星函数的h
star(-100,160,20,h) #调用五角星函数,画从下往上第四个小五角星
t.hideturtle() #程序结束,隐藏小海龟
t.done() #程序结束,保留画布屏幕