当前位置:   article > 正文

用 Python + turtle 模块绘制五星红旗_1.绘制五角星。 (1)创建一个模块文件,在该文件中定义一个函数,利用python内种模块

1.绘制五角星。 (1)创建一个模块文件,在该文件中定义一个函数,利用python内种模块

用 Python 绘制五星红旗

在这个代码示例中,我将介绍如何使用 Python 的 turtle 模块绘制五星红旗。turtle 模块是一个图形库,可以轻松地在 Python 中实现简单的绘图功能。

导入模块

首先,我们需要导入 turtle 模块和 math 模块,以便能够使用数学函数来计算五角星的边长、比例尺等参数。

import turtle
import math
  • 1
  • 2

创建画布和画笔对象

接下来,我们创建一个画笔对象,并设置画布大小、标题和背景颜色等属性。

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在上述代码中,我们使用 turtle.Pen() 函数创建一个名为 t 的画笔对象,并设置其绘图速度为 6。然后,我们创建一个 Screen 对象,并设置其标题和背景颜色等属性。最后,我们使用 setup() 函数设置画布的宽度和高度。

定义函数

在本示例中,我们定义了三个函数:

  • side_length(diameter):该函数用于根据五角星直径计算出五角星的边长。
  • scale(diameter):该函数用于计算比例尺,以便在画布上绘制五角星。
  • star(diameter, angle):该函数用于绘制一个五角星。

我们可以使用这些函数来计算五角星的相关参数,并绘制五角星。

绘制五角星

接下来,我们定义一个名为 national_flag() 的函数来绘制五角星红旗。该函数接受四个参数:

  • x:大五角星的直径。
  • y:大五角星距离画布顶端的距离。
  • z:小五角星的直径。
  • h:小五角星与 x 轴正半轴之间的夹角。

函数内部通过调用 star() 函数来绘制五角星。最后,我们使用 national_flag() 函数来绘制五星红旗的所有五角星。

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))  # 绘制第四颗小五角星

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

完成绘制

最后,我们使用 hideturtle() 函数隐藏画笔,并使用 turtle.done() 函数等待用户关闭窗口,即可完成五星红旗的绘制。

t.hideturtle()  # 隐藏画笔,完成绘制
turtle.done()  # 等待用户关闭窗口

  • 1
  • 2
  • 3

完整代码

# 导入 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()  # 等待用户关闭窗口

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/421614
推荐阅读
相关标签
  

闽ICP备14008679号