画中国国旗

import turtle as t
from math import sin, cos, radians


# 画方形
def drawRect(*args):
    # 判断参数数量
    if len(args) < 1 or len(args) > 2:
        raise Exception("参数数量不对")
    t.begin_fill()
    if len(args) == 1:
        for _ in range(0,4):
            t.fd(args[0])
            t.rt(90)
    else:
        t.fd(args[0])
        t.rt(90)
        t.fd(args[1])
        t.rt(90)
        t.fd(args[0])
        t.rt(90)
        t.fd(args[1])
        t.rt(90)
    t.end_fill()

# 画星星
# 传两个参数,边长和偏移角度
def drawStar(side, heading = 0):
    t.begin_fill()
    t.seth(heading)
    for _ in range(0,5):
        t.fd(side)
        t.lt(72)
        t.fd(side)
        t.rt(144)
    t.end_fill()

# 抬笔移动到指定位置
def move(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()


def drawChinaFlag():
    base = 20
    OFFSET_Y = sin(radians(18))
    OFFSET_X = cos(radians(18))
    # 画旗面
    t.color("red", "red")
    move(-15*base, 10*base)
    drawRect(30*base, 20*base)
    # 大五角星边长
    side_big = (3 * base - OFFSET_Y * 3 * base) / cos(radians(18))
    # 画大五角星
    t.color("yellow", "yellow")
    move(-10 * base - OFFSET_X * 3 * base, 5 * base + OFFSET_Y * 3 * base)
    drawStar(side_big)
    # 小五角星边长
    side_small = (1 * base - OFFSET_Y * 1 * base) / cos(radians(18))
    # 五角星1
    move(-5 * base - OFFSET_X * 1 * base, 8 * base + OFFSET_Y * 1 * base)
    drawStar(side_small,30)
    # 五角星2
    move(-3 * base - OFFSET_X * 1 * base, 6 * base + OFFSET_Y * 1 * base)
    drawStar(side_small, 15)
    # 五角星3
    move(-3 * base - OFFSET_X * 1 * base, 3 * base + OFFSET_Y * 1 * base)
    drawStar(side_small, -15)
    # 五角星4
    move(-5 * base - OFFSET_X * 1 * base, 1 * base + OFFSET_Y * 1 * base)
    drawStar(side_small, -30)
    t.hideturtle()
    t.done()
if __name__ == '__main__':
    drawChinaFlag()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值