今天带来一篇使用Python实现画出五星红旗

效果图如下:
五星红旗

以下是代码部分:

`

# 加载 turtle 模块和 math 模块
import turtle
import math

# 创建画笔对象,设置绘图速度、画布大小、窗口标题以及背景颜色等
t = turtle.Pen()
canvas_width = 1000  # 画布大小(宽)
canvas_height = 700  # 画布大小(高)
t.speed(6)  # 速度
screen = turtle.Screen()
screen.title('中华人民共和国万岁')  # 窗口标题
screen.setup(canvas_width, canvas_height)
screen.bgcolor('red')  # 背景颜色


# 计算五角星边长和比例尺的函数
def side_length(diameter):
    return math.sin(math.radians(72)) * diameter * 30


def scale(diameter):  # 计算比例尺的函数
    return canvas_width / 30 * diameter


# 绘制五角星的函数
def star(diameter, angle):
    # 将画笔移动到五角星顶点处,并转向指定角度
    t.setheading(angle)
    t.forward(scale(diameter) / 2)
    t.setheading(angle - 180)
    t.left(18)

    # 开始填充黄色并绘制五角星轮廓
    t.begin_fill()
    t.fillcolor('yellow')  # 将填充颜色设置为黄色
    t.pencolor('yellow')  # 将线条颜色设置为黄色
    for i in range(5):
        t.forward(side_length(diameter))
        t.right(144)
    t.end_fill()


# 计算直线与 x 轴正半轴之间夹角的函数
def spin(x, y):
    return math.degrees(math.atan2(x, y))


# 绘制五角星的函数
def national_flag(x, y, z, h):
    # 将画笔移动到指定位置并绘制五角星
    t.up()
    t.goto(-scale(x), scale(y))
    t.down()
    t.pencolor('yellow')  # 设置画笔颜色黄色
    star(z, h)


# 绘制五星红旗
national_flag(10, 5, 6, 180 - 18)  # 绘制大五角星
national_flag(5, 8, 2, spin(3, 5) + 180)  # 绘制第一颗小五角星
national_flag(3, 6, 2, spin(1, 7) + 180)  # 绘制第二颗小五角星
national_flag(3, 3, 2, 180 - spin(2, 7))  # 绘制第三颗小五角星
national_flag(5, 1, 2, 180 - spin(4, 5))  # 绘制第四颗小五角星

t.hideturtle()  # 完成绘制
turtle.done()  # 等待关闭窗口
````
最后修改:2023 年 11 月 30 日
如果觉得我的文章对你有用,请随意赞赏