python画五星红旗

 
import math
import turtle

# 画布及画笔设置
turtle.setup(1200, 800)     # 画布大小
turtle.bgcolor("red")       # 画布颜色
turtle.fillcolor("yellow")  # 填充颜色
turtle.color("yellow")      # 画笔颜色
turtle.speed(5)             # 画的速度(数字越大画的越快)

# 主星
turtle.begin_fill()         # 开始填充
turtle.up()                 # 提起画笔
turtle.goto(-520, 240)
turtle.down()               # 放下画笔,画出痕迹
for i in range(5):          # 五条边
    turtle.forward(240)
    turtle.right(144)
turtle.end_fill()           # 结束填充


def stars(lr, du, h):       # lr传方向,du表示要转化的角度,h表示离画笔的高度
    turtle.up()
    turtle.goto(-400, 200)  # 大星原点
    turtle.setheading(0)    # 重置海龟方向(水平向右)
    if lr == "left":
        turtle.left(math.degrees(du))
    else:
        turtle.right(math.degrees(du))

    turtle.forward((h * 40) / math.sin(du) - 40)    # 大星与小星的距离减小星的半径
    turtle.left(18)         # 小星顶点转向画边
    turtle.down()
    turtle.begin_fill()
    for j in range(5):
        turtle.forward(80 * math.cos(18))
        turtle.right(144)
    turtle.end_fill()


# 第一颗星
stars("left", math.atan(3 / 5), 3)
# 第二颗星
stars("left", math.atan(1 / 7), 1)
# 第三颗星
stars("right", math.atan(2 / 7), 2)
# 第四颗星
stars("right", math.atan(4 / 5), 4)

turtle.hideturtle()
turtle.done()
 

​​​​​​​

 

 思路:先设置画布画笔的一些属性,然后把画笔移至大星左角,画出大星,然后以大星的圆心为标准与小星圆心相连,计算出距离通过计算将海龟移至小星与圆的交点画出小星

特别注意的是在画小星调用函数的时候要清楚的知道海龟的方向,我就是忘了重置海龟方向然后一直画不出红旗,重置代码就是turtle.setheading(0)


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值