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()
画中国国旗
最新推荐文章于 2025-05-23 09:16:47 发布