五星红旗
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()


浙公网安备 33010602011771号