python 中使用turtle库 —— 绘制叠加等边三角形

举报
福州司马懿 发表于 2024/06/30 22:03:53 2024/06/30
【摘要】 前言在Python中,Turtle库是一个强大的图形绘制工具,它允许我们通过简单的命令和函数来绘制各种复杂的图形。今天,我们将通过Turtle库来绘制一系列叠加的等边三角形,每个三角形都会比前一个稍小一些,并且使用彩虹色的渐变效果。下面将一步步指导你如何完成这个任务。 第一步:准备环境首先,你需要确保你的Python环境已经安装好。然后,我们可以开始编写代码。在你的代码编辑器中,输入以下代...

前言

在Python中,Turtle库是一个强大的图形绘制工具,它允许我们通过简单的命令和函数来绘制各种复杂的图形。今天,我们将通过Turtle库来绘制一系列叠加的等边三角形,每个三角形都会比前一个稍小一些,并且使用彩虹色的渐变效果。下面将一步步指导你如何完成这个任务。

第一步:准备环境

首先,你需要确保你的Python环境已经安装好。然后,我们可以开始编写代码。在你的代码编辑器中,输入以下代码来导入Turtle库并给它起一个别名pic,这样我们可以更简洁地调用它的函数。

import turtle as pic

第二步:设置颜色和起始点

为了增加视觉效果,我们将使用一个包含多种颜色的列表colors。另外,我们还需要保存初始位置,以便每次绘制新的三角形时都可以从这个位置开始。

colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple', 'white']
point = pic.pos()

第三步:绘制叠加的等边三角形

现在,我们将开始编写主循环来绘制叠加的等边三角形。我们将使用两个嵌套的循环:外部循环控制三角形的数量,内部循环则用于绘制每个三角形。

外部循环

外部循环将遍历range(7),这意味着我们将绘制7个叠加的三角形(从最大到最小)。在每次循环中,我们将设置画笔颜色、将画笔移动到起始位置,并绘制一个等边三角形。

for i in range(7):
    pic.setheading(0)  # 设置画笔朝向为0度(正东方向)
    pic.color(colors[i])  # 选择颜色
    pic.penup()  # 提起画笔,移动不留痕迹
    pic.goto(point)  # 将画笔移动到起始位置
    pic.pendown()  # 放下画笔,移动留下痕迹
    
    # ... 绘制等边三角形的代码将放在这里 ...

    # 在每个三角形绘制完毕后,我们需要将画笔向前移动一些距离,以便为下一个三角形腾出空间
    pic.setheading(0)
    pic.forward(30)

内部循环

内部循环将用于绘制每个等边三角形。我们将使用begin_fill()end_fill()函数来填充三角形。另外,我们需要确保在绘制第一个三角形的最后一个边时更新起始点point,以便下一个三角形可以从正确的位置开始。

    for j in range(7-i):
        pic.begin_fill()  # 开始填充
        for k in range(3):
            if(j==0 and k==2):
                point=pic.pos()  # 更新起始点(只在第一个三角形的最后一个边更新)
            pic.forward(30)  # 向前移动30个单位
            pic.left(120)  # 逆时针旋转120度
        pic.end_fill()  # 结束填充

第四步:隐藏画笔并结束绘制

当所有的三角形都绘制完毕后,我们可以使用hideturtle()函数来隐藏画笔,并使用done()函数来确保窗口保持打开状态,直到用户关闭它。

pic.hideturtle()
pic.done()

完整代码

将以上所有部分组合在一起,我们得到完整的代码:

import turtle as pic

colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple', 'white']
point = pic.pos()

for i in range(7):
    pic.setheading(0)
    pic.color(colors[i])
    pic.penup()
    pic.goto(point)
    pic.pendown()
    
    for j in range(7-i):
        pic.begin_fill()
        for k in range(3):
            if(j==0 and k==2):
                point=pic.pos()
            pic.forward(30)
            pic.left(120)
        pic.end_fill()
        
    pic.setheading(0)
    pic.forward(30)

pic.hideturtle()
pic.done()

运行这段代码,你将看到一个由彩虹色渐变的叠加等边三角形图案在屏幕上显示出来。每个三角形都比前一个稍小一些,形成了漂亮的视觉效果。

图片.png

进阶

将代码两处的 setheading 的参数都改成15,你会看到一个斜着的三角形

图片.png

setheading 函数介绍

在 Python 的 turtle 模块中,setheading 函数用于设置海龟(turtle)的方向或朝向。这个函数接受一个角度值(以度为单位)作为参数,并将海龟的朝向设置为该角度。默认情况下,海龟的初始朝向是向东(即0度)。

使用方法

使用 setheading 函数时,你可以通过传递一个整数或浮点数来指定海龟的朝向。这个角度是相对于正东方向(0度)的偏移量。正数表示顺时针旋转,负数表示逆时针旋转。

例如:

  • turtle.setheading(90) 将使海龟朝向北方(正北方向是90度)。
  • turtle.setheading(-90) 将使海龟朝向西方(正西方向是-90度或270度)。
  • turtle.setheading(45) 将使海龟朝向东北方向(45度)。

示例代码

下面是一个简单的示例代码,展示了如何使用 setheading 函数来设置海龟的朝向:

import turtle

# 创建一个新的海龟对象
t = turtle.Turtle()

# 设置海龟的朝向为北方(90度)
t.setheading(90)

# 向前移动100个单位,由于海龟朝向北方,所以它将向上移动
t.forward(100)

# 等待用户关闭窗口
turtle.done()

在这个示例中,我们首先导入了 turtle 模块,并创建了一个新的海龟对象 t。然后,我们使用 setheading 函数将海龟的朝向设置为北方(90度)。接着,我们使用 forward 函数使海龟向前移动100个单位。由于海龟现在朝向北方,所以它将向上移动。最后,我们使用 turtle.done() 函数来保持窗口打开,直到用户关闭它。

图片.png

通过使用 setheading 函数,你可以精确地控制海龟的朝向,从而绘制出具有特定方向和形状的图形。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。