用Python Turtle来画一朵花
Turtle 是一个类似于画板的 Python 特性,它让我们可以命令Turtle在上面画个不停我们可以使用像 turtle.forward(…) 和 turtle.right(…) 这样的函数,可以让Turtle四处移动。Turtle 是一种适合初学者的学习 Python 的方法,它可以运行一些基本的命令,并以图形的方式查看Turtle的动作。它就像一个画板,允许你在它上面画画。Turtle 模块可以以面向对象和面向过程的方式使用。
为了绘图,Python turtle提供了许多函数和方法,即前进、后退等。一些常用的方法是。
- forward(x): 将笔在前进方向上移动x个单位。
-
backward(x): 将笔向后移动x个单位。
-
right(x):将笔沿顺时针方向旋转一个角度x。
-
left(x): 将笔沿逆时针方向旋转一个角度x。
-
penup(): 停止绘制Turtle笔。
-
pendown(): 开始绘制Turtle笔。
在这篇文章中,我们将借助Turtle编程来写一段画花的代码。如下图所示。
步骤:
- 导入Turtle模块
- 设置Turtle的速度
- 使用循环来避免不必要的代码重复。
- 用具体的坐标绘制每个步骤
以下是实现。
示例1:- Flower
import turtle
tur = turtle.Turtle()
tur.speed(20)
tur.color("black", "orange")
tur.begin_fill()
for i in range(50):
tur.forward(300)
tur.left(170)
tur.end_fill()
turtle.done()
输出:
示例 2:
import turtle
# Set initial position
turtle.penup ()
turtle.left (90)
turtle.fd (200)
turtle.pendown ()
turtle.right (90)
# flower base
turtle.fillcolor ("red")
turtle.begin_fill ()
turtle.circle (10,180)
turtle.circle (25,110)
turtle.left (50)
turtle.circle (60,45)
turtle.circle (20,170)
turtle.right (24)
turtle.fd (30)
turtle.left (10)
turtle.circle (30,110)
turtle.fd (20)
turtle.left (40)
turtle.circle (90,70)
turtle.circle (30,150)
turtle.right (30)
turtle.fd (15)
turtle.circle (80,90)
turtle.left (15)
turtle.fd (45)
turtle.right (165)
turtle.fd (20)
turtle.left (155)
turtle.circle (150,80)
turtle.left (50)
turtle.circle (150,90)
turtle.end_fill ()
# Petal 1
turtle.left (150)
turtle.circle (-90,70)
turtle.left (20)
turtle.circle (75,105)
turtle.setheading (60)
turtle.circle (80,98)
turtle.circle (-90,40)
# Petal 2
turtle.left (180)
turtle.circle (90,40)
turtle.circle (-80,98)
turtle.setheading (-83)
# Leaves 1
turtle.fd (30)
turtle.left (90)
turtle.fd (25)
turtle.left (45)
turtle.fillcolor ("green")
turtle.begin_fill ()
turtle.circle (-80,90)
turtle.right (90)
turtle.circle (-80,90)
turtle.end_fill ()
turtle.right (135)
turtle.fd (60)
turtle.left (180)
turtle.fd (85)
turtle.left (90)
turtle.fd (80)
# Leaves 2
turtle.right (90)
turtle.right (45)
turtle.fillcolor ("green")
turtle.begin_fill ()
turtle.circle (80,90)
turtle.left (90)
turtle.circle (80,90)
turtle.end_fill ()
turtle.left (135)
turtle.fd (60)
turtle.left (180)
turtle.fd (60)
turtle.right (90)
turtle.circle (200,60)
turtle.done()
输出: