Python – 如何设置 Turtle 的起始位置

Python 在各个领域证明了自己的能力。它非常适合数据科学和机器学习等繁重的计算工作。它非常适合创建计算机网络和 API。它甚至非常适合创建图形或游戏。

今天,我们将探索最简单但功能极其强大的 Python 库之一——Turtle。在此过程中,我们将学习如何在 Turtle 中设置绘图的起始位置并绘制一些简单的形状,以熟悉 Turtle 的语法和功能。那么让我们开始吧。

什么是乌龟?

Turtle 是一个动画和图形开发模块,是 Python 标准库的一部分。它有助于通过一些简单的功能绘制复杂的形状和动画。Python 程序员经常将其与著名的 Python 库 pygame 进行比较。pygame和turtle之间存在差异,但都有各自的优点。我们将在最后对两者进行比较。

海龟的历史

1967 年,当计算机编程还处于起步阶段时,Wally Feurzeig、Seymour Papert 和 Cynthia Solomon 创建了一种 Logo 编程语言。海龟是这种语言的一部分,它的创建是为了向孩子们介绍编程。它只有两个功能。Turtle.forward()Turtle.right()

想象一只乌龟坐在你的电脑屏幕上。现在这只乌龟想要移动。当您使用函数 Turtle.forward(10) 时,海龟会沿其最初面向的方向移动 10 个像素。在途中,它会在屏幕上画一条线。无论乌龟走到哪里,它都会不断地画一条线。把它想象成一支永远不会抬起的笔。现在,乌龟最终会到达屏幕的末端。所以它需要在某个时刻旋转。为此,就有了这个Turtle.right()功能。您可以通过输入 来将海龟顺时针方向旋转 10 度 Turle.right(10)

只需这两个简单的命令,就可以创建复杂的形状和绘图。

Python的Turtle模块基于这个Turtle,并且具有与这些类似的功能以及许多更复杂的功能。这取决于 tkinter 库。所以它需要一个安装了 tkinter 的 Python 版本。在 Python 2.7 之前有一个不同的 Turtle 模块。在 Python 2.7 之前,turtle 模块的名称中都有大写的“T”——“Turtle”。新版本Python中的turtle模块有小写“t”,使其成为“turtle”。新版本的海龟几乎与旧版本完全兼容。

海龟模块的功能

turtle 有面向对象和面向过程的方法来创建海龟图形。它主要有两个类——TurtleScreen()创建窗口和Rawturtle()使用画布进行绘制。一个 RawTurtle()称为 的子类Turtle用于在Screen. 这两个类都使用 Tkinter 进行基本图形处理。

它有控制乌龟的运动、乌龟的状态、控制画笔、控制窗口和动画的方法。模块中有超过100个功能来控制图形的各个方面。

如何设置海龟窗口

要设置海龟窗口,首先,我们将导入海龟模块。

import turtle

导入turtle模块后,我们将使用Screen()turtle模块的方法为我们的乌龟创建一个游乐场。

screen = turtle.Screen()

现在我们有了屏幕,我们将使用 、 和 、setup()方法 bgcolor()设置屏幕的大小、游乐场的颜色和窗口的标题title()

screen.setup(width=400, height=300)
screen.bgcolor("white")
screen.title("Turtle Window")

我们还需要在某个时候退出窗口。为此,我们将使用类exitonclick()的方法Screen

当我们运行该程序时,将启动一个带有上述配置的海龟窗口。

海龟窗口示例

我们开始吧![我们的乌龟游乐场已经准备好了。现在让我们看看如何设置海龟的起始位置。

首先,让我们使用该方法检查海龟的当前位置position()

turtle.position()
Python 检查海龟的位置

因此,当我们打印海龟的位置时,我们得到坐标 (0.00,0.00),海龟窗口上会出现一个朝右并位于窗口中心的箭头。这个箭头就是我们的乌龟。这意味着如果我们现在使用turtle.forward()方法,它将从游乐场中心向右移动提到的单位数。

setx()现在我们可以使用,sety()方法或方法来改变海龟的位置goto()但它的问题是,如果我们现在使用它,它就会画一条线。所以我们需要先举起我们的乌龟。让我们看看如何设置起始位置。

goto()使用方法设置起始位置

我们可以通过首先使用该方法将乌龟举起penup(),然后使用该goto()方法将其移动到特定位置来设置乌龟的起始位置。

turtle.penup()
turtle.goto(100,100)
设置海龟的起始位置

这样我们的乌龟就移动到了要求的位置。现在你可以使用该pendown()方法放下乌龟并开始绘制你想要的东西。另一种方法是使用setX()setY()方法。

使用setx()sety()方法设置起始位置

使用setx和sety方法非常简单。此处分别设置 x 和 y 坐标。

Setx 和 Sety 方法海龟

setx 方法和 goto 方法的区别setx() sety()在于 setx sety 方法比 goto 方法提供了更多的灵活性。您可以在上面的剪辑中看到,它首先在 x 正方向上移动 100 个像素,然后在 y 正方向上移动 100 个像素。但两种方法中乌龟的最终位置保持相同。

如何用乌龟画东西?

现在我们有了起始位置,让我们尝试画一些东西。

为了画一些东西,首先,我们必须使用该pendown()方法放下我们的乌龟。

turtle.pendown()

现在我们可以使用forward()和backward()方法前进或后退,也可以使用right()和left()方法旋转海龟。使用这些方法,让我们尝试绘制一个正方形和一个圆形。

import turtle
 
screen = turtle.Screen()
 
screen.setup(width=400, height=300)
screen.bgcolor("white")
screen.title("Turtle Window")
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(50)
turtle.penup()
turtle. goto(-25, -25)
turtle.pendown()
turtle.circle(25)
screen.exitonclick()
使用乌龟绘制正方形和圆形

为了绘制一个正方形,我们首先向右移动 50 个像素,然后将乌龟旋转 90 度,然后重复同样的操作 3 次以上。然后我们将乌龟移动到不同的位置并使用该circle()方法画了一个圆圈。

相关:学习用乌龟画鱼

退出海龟窗口

要退出海龟窗口,我们只需像任何其他桌面应用程序一样单击十字按钮,或者可以在终端中使用 ctrl+C 命令。

Pygame 与 Turtle – 哪个更好?

Pygame 和 Turtle 都是为开发图形而创建的。Pygame 提供了更高级和低级的图形访问,而 Turtle 是一个轻量级的初学者友好的图形模块,用于以简单的方式介绍编程。

如果你想绘制一些基本的动画或图形设计,turtle 非常适合这个目的,如果你想创建游戏或重型 GUI 软件,pygame 是最好的选择。

所以如果我们谈论功能,pygame 比 Turtle 更好,如果我们谈论简单性,Turtle 更好。使用turtle还有另一个好处,你不需要安装任何库来使用它,而你需要安装pygame才能使用它。

相关 Python Pygame:简单介绍

结论

Turtle 是一个很棒的库,用于创建简单的图形设计。它的功能非常简单,不需要任何单独的安装。它表明,如果我们以正确的方式进行编程,编程可以变得多么简单。对于艺术程序员来说,这是展示其技能的绝佳选择。即使您不完全是一位艺术家,也可以尝试一下,编写几行代码来绘制简单的形状或任何您想要的东西。实践是编程的重要组成部分。

参考

海龟官方文档

同一个问题的堆栈溢出线程。