通过查找资料可以知道,一旦确定旗的长度,整个旗就确定下来了。
于是,我采用自定义旗的长度来获得不同大小的旗的方式进行实现。
代码如下:
import turtle
import math
=================================数据准备======================
turtle.speed(100)
turtle.hideturtle()
设置窗体大小(全屏)
turtle.setup(1.0,1.0,0,0)
设置画笔参数
turtle.pensize(1)
获取自定义值并根据国旗比例求得高
flagLength=turtle.numinput('国旗的大小','输入你想要的国旗长度')
flagHight=flagLength*2/3
构造长宽用于遍历
lengthList=[flagLength,flagHight,flagLength,flagHight]
国旗红布单元格大小
size=flagHight/20
国旗大星星中心点坐标
bigStar_x=-size*10
bigStar_y=size*5
国旗四个小星星的中心点坐标(由上到下)
smallStarCoordinate={-size*5:8*size,-size*3:size*6,-size*3:size*3,-size*5:size}
===========================封装方法==============================
画国旗红布
def drawRectangle(lengthList):
# 设置画笔起点
外汇代理http://www.fx61.com/ib.html
turtle.up()
turtle.goto(-flagLength / 2, flagHight / 2)
turtle.down()
画笔及填充颜色
turtle.pencolor("red")
turtle.fillcolor('red')
画矩形并填充
turtle.begin_fill()
for length in lengthList:
turtle.forward(length)
turtle.right(90)
turtle.end_fill()
画大星星
def drawBigStar(size):
# 大星星五边长度 cos18度=0.9510565
bigStarLength = 3 * size * 0.9510565 * 2
turtle.up()
turtle.goto(-size*10,size*8)
turtle.seth(-72)
turtle.pencolor("yellow")
turtle.fillcolor('yellow')
turtle.begin_fill()
turtle.down()
for i in range(5):
turtle.forward(bigStarLength)
turtle.right(144)
turtle.end_fill()
小星星方法
angle 小星星与大猩猩的偏角度 length大猩猩中心至小星星最近点的距离
def smallStar(angle,length,bigStar_x,bigStar_y):
turtle.up()
turtle.goto(bigStar_x,bigStar_y)
turtle.seth(angle)
turtle.forward(length)
turtle.down()
turtle.left(18)
turtle.begin_fill()
# 小星星五边长度
smallStarLength = size * 0.9510565 * 2
for i in range(5):
turtle.forward(smallStarLength)
turtle.right(144)
turtle.end_fill()
计算大星星中心与小星星最近点的距离
def getDistance(length,height,size):
return math.sqrt(math.pow(length*size,2)+math.pow(height*size,2))-size
定义字典存储四小星星的偏角度和距离,用于遍历的数据
location={30.96375:getDistance(5,3,size),8.12970:getDistance(7,1,size),-15.94539:getDistance(7,2,size),-38.65980:getDistance(5,4,size)}
画五星红旗方法
def drawNationalFlag():
drawRectangle(lengthList)
drawBigStar(size)
for k,v in location.items():
smallStar(k,v,bigStar_x,bigStar_y)
画
drawNationalFlag()
turtle.exitonclick()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。