python turtle 长方形_Python turtle 画五星红旗

通过查找资料可以知道,一旦确定旗的长度,整个旗就确定下来了。

于是,我采用自定义旗的长度来获得不同大小的旗的方式进行实现。

代码如下:

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):

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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值