上机实验2——turtle 库绘制进阶图形
知识点:turtle 库坐标控制、循环结构、函数封装(教材2.3-2.4)
实验任务 :
- 绘制嵌套彩色五角星(大小逐层递减)
- 设计函数绘制自定义正多边形(边数与颜色参数化)
- 扩展:实现动态旋转花瓣图案。
实现思路:
1.导入 turtle
库用于绘图操作,导入 time
库(需要控制旋转速度)来实现延迟功能。
2. 确定五角星的颜色列表,设置初始大小。通过循环来控制绘制五角星的数量,在每次循环内,设置画笔颜色,使用内层循环绘制单个五角星的五条边。绘制完一个五角星后,减小其大小并调整画笔位置,以便绘制下一个更小的五角星。
3. 设计一个函数,接收边数和颜色作为参数。在函数内,根据边数计算出每个外角的角度。设置好画笔颜色后,通过循环,按边数绘制多边形的每条边,每次绘制完一条边后,让画笔旋转相应的外角角度。
4. 先设计函数绘制单个花瓣,利用 turtle
的turtle.circle()
圆弧绘制方法来实现。再设计函数,根据花瓣数量,循环调用绘制单个花瓣的函数,并旋转一定角度,从而绘制出完整的花朵。最后设计动态旋转函数,在每次循环中,先清除之前绘制的内容,重新绘制花朵,然后让花朵旋转一定角度,并使用 time
库time.sleep()
函数添加延迟,以实现动态旋转效果。
完整代码:
import turtle
import time
def draw_nested_pentagrams():
colors = ['pink', 'green', 'blue', 'orange', 'purple']
size = 200
for i in range(5):
turtle.pencolor(colors[i])
for _ in range(5):
turtle.forward(size)
turtle.right(144)
size -= 40
turtle.penup()
turtle.forward(20)
turtle.right(144)
turtle.pendown()
def draw_regular_polygon(sides, color):
angle = 360 / sides
turtle.pencolor(color)
for _ in range(sides):
turtle.forward(100)
turtle.right(angle)
def draw_petal():
turtle.circle(100, 60)
turtle.left(120)
turtle.circle(100, 60)
def draw_flower(num_petals):
for _ in range(num_petals):
draw_petal()
turtle.left(360 / num_petals)
def rotate_flower(num_petals, duration):
screen = turtle.Screen()
for _ in range(duration):
screen.tracer(0)
turtle.clear()
draw_flower(num_petals)
screen.update()
turtle.left(1)
# 每旋转一次添加 0.1 秒的延迟
time.sleep(0.1)
# 设置画布和画笔
turtle.speed(0.55)
turtle.pensize(2)
# 绘制嵌套彩色五角星
draw_nested_pentagrams()
# 移动画笔到新位置
turtle.penup()
turtle.goto(200, 0)
turtle.pendown()
# 绘制自定义正多边形(例如,六边形,黄色)
draw_regular_polygon(6, 'black')
# 移动画笔到新位置绘制旋转花瓣
turtle.penup()
turtle.goto(-200, -200)
turtle.pendown()
# 动态旋转花瓣图案
rotate_flower(8, 360)
# 完成绘制
turtle.done()
运行截图: