五星红旗

import turtle
import math

def draw_star(t, size):
"""绘制五角星,size为边长,自动根据海龟方向调整顶点指向"""
t.begin_fill()
for _ in range(5):
t.forward(size)
t.right(144)
t.end_fill()

def draw_china_flag():
screen = turtle.Screen()
screen.setup(640, 480) # 设置画布尺寸
#screen.title("五星红旗")

t = turtle.Turtle()
t.speed(10)
t.penup()

# 绘制红色背景
t.goto(-320, 240)  # 左上角坐标
t.pendown()
t.color("red")
t.begin_fill()
for _ in range(2):  # 绘制矩形
    t.forward(640)
    t.right(90)
    t.forward(480)
    t.right(90)
t.end_fill()

# 大五角星参数(完全正立,再往左移动2厘米)
big_star_x = -260  # 大星中心x坐标向左移动20像素(2厘米)
big_star_y = 80    # 大星中心y坐标保持不变

# 绘制大星(顶点朝正上方,顺时针旋转2度)
t.penup()
t.goto(big_star_x, big_star_y)
t.color("yellow")
t.setheading(73)   # 设置海龟朝向73度(75度 - 2度,顺时针再旋转2度)
t.pendown()
draw_star(t, 100)  # 大星边长增大为100像素

# 四颗小星坐标和角度(指向大星中心,间距合理)
small_stars = [
    # 坐标往左上移动,间距更大
    (-160, 200),   # 小星1(右上)
    (-120, 160),  # 小星2(右中)
    (-120, 80),   # 小星3(右中下)
    (-160, 40)    # 小星4(右下)
]

# 绘制四颗小星
for x, y in small_stars:
    t.penup()
    t.goto(x, y)
    # 计算小星到大星中心的角度(调整五角星方向)
    dx = big_star_x - x
    dy = big_star_y - y
    angle = math.degrees(math.atan2(dy, dx))
    t.setheading(angle)  # 指向大星中心
    t.pendown()
    draw_star(t, 30)  # 小星边长增大为30像素

t.hideturtle()
turtle.done()

draw_china_flag()

posted @ 2025-03-02 20:40  ouyeye  阅读(75)  评论(0)    收藏  举报