了解 Python turtle
库
turtle
是一个预装的 Python 库,它使用户能够通过为他们提供虚拟画布来创建图片和形状。您用于绘图的屏幕笔称为乌龟,这就是库的名称。简而言之,Pythonturtle
库可帮助新程序员以一种有趣且交互式的方式了解使用 Python 进行编程的感觉。
turtle
主要用于向孩子介绍计算机的世界。这是理解 Python 概念的一种简单而通用的方式。这使它成为孩子们迈出 Python 编程第一步的绝佳途径。话虽如此,Pythonturtle
库并不仅限于小孩子!事实证明,它对于尝试 Python 的成年人非常有用,这对于 Python初学者来说非常有用。
使用 Pythonturtle
库,您可以绘制和创建各种类型的形状和图像。这是您可以使用的各种图纸的示例turtle
:
酷,对吧?这只是您可以使用 Pythonturtle
库制作的许多不同绘图之一。大多数开发人员用于turtle
绘制形状、创建设计和制作图像。其他人用于turtle
创建迷你游戏和动画,就像您在上面看到的那样。
入门 turtle
在继续之前,您需要做两件重要的事情来充分利用本教程:
-
Python 环境:确保您熟悉您的编程环境。您可以使用IDLE或Jupyter Notebook等应用程序使用
turtle
. 但是,如果您对它们不满意,那么您可以使用REPL进行编程,您将在本教程中使用它。 -
Python 版本:确保您的计算机上安装了 Python 版本 3。如果没有,那么您可以从Python 网站下载它。有关设置方面的帮助,请查看Python 3 安装和设置指南。
好处turtle
是它是一个内置库,因此您无需安装任何新软件包。您需要做的就是将库导入您的 Python 环境,在本例中就是 REPL。打开 REPL 应用程序后,您可以通过键入以下代码行在其上运行 Python 3:
>>> python3
这会将 Python 3 调用到您的 REPL 应用程序中,并为您打开环境。
在开始 Python 编程之前,您需要了解什么是库。在非计算机世界中,图书馆是存放不同类型书籍的地方。您可以随时访问这些书籍,从中获取您需要的任何信息,然后将它们放回原处。
在计算机世界中,图书馆的工作方式类似。根据定义,库是一组重要的函数和方法,您可以访问它们以简化编程。Pythonturtle
库包含创建图像所需的所有方法和函数。要访问 Python 库,您需要将其导入 Python 环境,如下所示:
>>> import turtle
现在您已经拥有turtle
了 Python 环境,您可以开始使用它进行编程了。turtle
是一个图形库,这意味着您需要创建一个单独的窗口(称为screen)来执行每个绘图命令。您可以通过为其初始化变量来创建此屏幕。
在 Python 中,您使用变量来存储稍后将在程序中使用的信息。您初始化当您分配一个初始值给它一个变量。由于变量的值不是常数,因此在程序执行期间它可能会发生多次变化。
现在,要打开turtle
屏幕,您可以通过以下方式为其初始化一个变量:
>>> s = turtle.getscreen()
您应该会看到一个单独的窗口打开:
这个窗口称为屏幕。您可以在此处查看代码的输出。屏幕中间的黑色小三角形叫做乌龟。
注意:请记住,当您命名变量时,您需要选择一个任何正在查看您的程序的人都可以轻松理解的名称。但是,您还必须选择一个方便您使用的名称,特别是因为您将在整个程序中经常调用它!
例如,选择一个像my_turtle_screen_name
这样的名字会很乏味地继续输入,而像Joe
或a
这样的名字看起来很随机。使用单个字母字符,就像s
在这种情况下一样,会更合适。那是因为它简短而甜蜜,而且很清楚地记住了字母s
指的是screen。
接下来,您初始化变量t
,然后您将在整个程序中使用它来引用海龟:
>>> t = turtle.Turtle()
就像屏幕一样,你也可以给这个变量另一个名字,比如a
orJane
或 even my_turtle
,但在这种情况下,你会坚持使用t
.
你现在有你的屏幕和你的乌龟。屏幕充当画布,而海龟充当笔。您可以编写乌龟在屏幕上移动的程序。海龟有一些可变的特征,如大小、颜色和速度。它总是指向一个特定的方向,除非你另有说明,否则它会朝那个方向移动:
- 当它向上时,意味着它移动时不会画线。
- 当它down 时,意味着它移动时会画一条线。
在下一部分中,您将探索使用 Pythonturtle
库进行编程的不同方式。
编程 turtle
在使用 Pythonturtle
库进行编程时,您将学到的第一件事是如何让海龟朝着您希望的方向移动。接下来,您将学习如何自定义您的海龟及其环境。最后,您将学习一些可以执行一些特殊任务的额外命令。
移动乌龟
海龟可以向四个方向移动:
- 向前
- 落后
- 剩下
- 正确的
海龟移动.forward()
或.backward()
朝着它面向的方向移动。您可以通过转动.left()
或.right()
一定程度来改变这个方向。您可以像这样尝试每个命令:
>>> t.right(90)
>>> t.forward(100)
>>> t.left(90)
>>> t.backward(100)
当你运行这些命令时,海龟将向右转九十度,向前走一百个单位,向左转九十度,向后移动一百个单位。您可以在下图中看到它的外观:
您也可以使用这些命令的缩短版本:
-
t.rt()
代替t.right()
-
t.fd()
代替t.forward()
-
t.lt()
代替t.left()
-
t.bk()
代替t.backward()
您还可以从当前位置到屏幕上的任何其他任意位置画一条线。这是在坐标的帮助下完成的:
屏幕分为四个象限。程序开始时海龟最初定位的点是(0,0)
。这称为主页。要将海龟移动到屏幕上的任何其他区域,请使用.goto()
并输入如下坐标:
>>> t.goto(100,100)
您的输出将如下所示:
您已经从当前位置到(100,100)
屏幕上的点画了一条线。
要将海龟带回其原始位置,请键入以下内容:
>>> t.home()
这就像一个将海龟送回原点的快捷命令(0,0)
。这比打字快t.goto(0,0)
。
绘制形状
现在您知道了海龟的运动,您可以继续制作实际的形状。您可以从绘制多边形开始,因为它们都由以特定角度连接的直线组成。这是您可以尝试的示例:
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
您的输出将如下所示:
做得好!你刚刚画了一个正方形。通过这种方式,可以对海龟进行编程以创建不同的形状和图像。
现在,尝试绘制一个矩形,使用此代码作为模板。请记住,在矩形中,所有四个边都不相等。您需要相应地更改代码。一旦你这样做了,你甚至可以尝试通过增加边数和改变角度来创建其他多边形。
绘制预设图形
假设你想画一个圆。如果你试图用你画正方形的方式来画它,那将是非常乏味的,而且你必须花很多时间来画一个形状。幸运的是,Pythonturtle
库为此提供了解决方案。您可以使用单个命令绘制圆:
>>> t.circle(60)
你会得到这样的输出:
括号内的数字是圆的半径。您可以通过更改其半径值来增大或减小圆的大小。
同样,你也可以画一个dot,它只不过是一个实心圆圈。输入这个命令:
>>> t.dot(20)
你会得到一个这样的实心圆圈:
括号内的数字是点的直径。就像圆一样,您可以通过更改其直径值来增加或减少点的大小。
到目前为止做得很好!您已经学会了如何移动海龟并用它创建不同的形状。在接下来的几节中,您将看到如何根据您的要求自定义海龟及其环境。
更改屏幕颜色
默认情况下,turtle
总是打开一个白色背景的屏幕。但是,您可以随时使用以下命令更改屏幕颜色:
>>> turtle.bgcolor("blue")
您可以替换"blue"
为任何其他颜色。尝试"green"
或"red"
。你会得到这样的结果:
只需输入它们的十六进制代码,您就可以为您的屏幕使用各种颜色。要了解有关使用不同颜色的更多信息,请查看 Pythonturtle
库文档。
更改屏幕标题
有时,您可能想要更改屏幕的标题。你可以让它更个性化,比如"My Turtle Program"
,或者更适合你的工作,比如"Drawing Shapes With Turtle"
。您可以在此命令的帮助下更改屏幕标题:
>>> turtle.title("My Turtle Program")
您的标题栏现在将显示:
通过这种方式,您可以根据自己的喜好更改屏幕的标题。
改变海龟大小
您可以增加或减少屏幕上海龟的大小以使其更大或更小。这只会更改形状的大小,而不会影响笔在屏幕上绘制时的输出。尝试输入以下命令:
>>> t.shapesize(1,5,10)
>>> t.shapesize(10,5,1)
>>> t.shapesize(1,10,5)
>>> t.shapesize(10,1,5)
您的输出将如下所示:
给出的数字是海龟大小的参数:
- 拉伸长度
- 拉伸宽度
- 轮廓宽度
您可以根据自己的喜好更改这些。在上面给出的示例中,您可以看到海龟外观的明显差异。有关如何更改海龟大小的更多信息,请查看 Pythonturtle
库文档。
更改笔大小
前面的命令只改变了海龟形状的大小。但是,有时您可能需要增加或减少笔的粗细。您可以使用以下命令执行此操作:
>>> t.pensize(5)
>>> t.forward(100)
这会导致如下结果:
如您所见,您的笔的大小现在是原始大小的五倍(原来是一倍)。试着多画一些不同大小的线,比较它们之间的粗细差异。
改变乌龟和笔的颜色
当您第一次打开一个新屏幕时,海龟最初是一个黑色图形,并用黑色墨水绘制。根据您的要求,您可以做两件事:
- 更改海龟的颜色:这会更改填充颜色。
- 更改笔的颜色:这会更改轮廓或墨水颜色。
如果您愿意,您甚至可以选择这两者。在更改颜色之前,请增加乌龟的大小,以帮助您更清楚地看到色差。输入此代码:
>>> t.shapesize(3,3,3)
现在,要更改海龟(或填充)的颜色,请键入以下内容:
>>> t.fillcolor("red")
你的乌龟看起来像这样:
要更改笔(或轮廓)的颜色,请键入以下内容:
>>> t.pencolor("green")
你的乌龟看起来像这样:
要更改两者的颜色,请键入以下内容:
>>> t.color("green", "red")
你的乌龟看起来像这样:
在这里,第一种颜色用于笔,第二种颜色用于填充。请注意,更改笔和填充的颜色也会相应地更改屏幕上海龟的颜色。
填充图像
图像中的着色通常会使它看起来更好,不是吗?Pythonturtle
库为您提供了为绘图添加颜色的选项。尝试输入以下代码,看看会发生什么:
>>> t.begin_fill()
>>> t.fd(100)
>>> t.lt(120)
>>> t.fd(100)
>>> t.lt(120)
>>> t.fd(100)
>>> t.end_fill()
当你执行这段代码时,你会得到一个用纯色填充的三角形,如下所示:
当您使用 时.begin_fill()
,您是在告诉您的程序您将要绘制一个需要填充的闭合形状。然后,您使用.end_fill()
来指示您已完成形状的创建,现在可以对其进行填充.
改变海龟的形状
乌龟最初的形状并不是真正的乌龟,而是一个三角形的图形。但是,您可以更改海龟的外观,并且在这样做时确实有几个选择。您可以通过键入以下命令来查看其中的一些:
>>> t.shape("turtle")
>>> t.shape("arrow")
>>> t.shape("circle")
海龟的形状会相应改变,像这样:
您还可以尝试其他几个选项:
- 正方形
- 箭
- 圆圈
- 龟
- 三角形
- 经典的
经典的形状是原始形状。查看 Pythonturtle
库文档以了解有关您可以使用的形状类型的更多信息。
改变笔速度
乌龟通常以中等速度移动。如果您想降低或提高速度以使海龟移动得更慢或更快,则可以通过键入以下内容来实现:
>>> t.speed(1)
>>> t.forward(100)
>>> t.speed(10)
>>> t.forward(100)
此代码将首先降低速度并向前移动海龟,然后增加速度并再次向前移动海龟,如下所示:
速度可以是从 0(最慢的速度)到 10(最高的速度)之间的任意数字。你可以玩弄你的代码,看看海龟会走多快或多慢。
一条龙定制
假设您要将海龟的特征设置为以下内容:
- 笔颜色:紫色
- 填充颜色:橙色
- 笔尺寸: 10
- 笔速: 9
从你刚刚学到的,代码应该是这样的:
>>> t.pencolor("purple")
>>> t.fillcolor("orange")
>>> t.pensize(10)
>>> t.speed(9)
>>> t.begin_fill()
>>> t.circle(90)
>>> t.end_fill()
它很长,但还不错,对吧?
现在,想象一下如果你有十只不同的海龟。改变他们所有的特征对你来说是非常令人厌烦的!好消息是,您可以通过在一行代码中更改参数来减少工作量,如下所示:
>>> t.pen(pencolor="purple", fillcolor="orange", pensize=10, speed=9)
>>> t.begin_fill()
>>> t.circle(90)
>>> t.end_fill()
这会给你一个这样的结果:
这一行代码改变了整个笔,而您不必单独更改每个特征。要了解有关此命令的更多信息,请查看 Pythonturtle
库文档。
做得好!既然您已经学会了自定义海龟和屏幕,请看一下使用 Pythonturtle
库进行绘图时所需的其他一些重要命令。
拿起和放下笔
有时,您可能希望将乌龟移动到屏幕上的另一个点,而无需在屏幕上绘制任何内容。为此,您可以使用.penup()
. 然后,当您想再次开始绘图时,请使用.pendown()
. 使用您之前用于绘制正方形的代码试一试。尝试键入以下代码:
>>> t.fd(100)
>>> t.rt(90)
>>> t.penup()
>>> t.fd(100)
>>> t.rt(90)
>>> t.pendown()
>>> t.fd(100)
>>> t.rt(90)
>>> t.penup()
>>> t.fd(100)
>>> t.pendown()
运行此代码时,您的输出将如下所示:
在这里,通过在原始程序之间添加一些额外的命令,您获得了两条平行线而不是正方形。
撤消更改
不管你多么小心,总有犯错的可能。不过不用担心!Pythonturtle
库为您提供了撤消已完成操作的选项。如果您想撤消您所做的最后一件事,请输入以下内容:
>>> t.undo()
这将撤消您运行的最后一个命令。如果要撤消最后三个命令,则需要键入t.undo()
三遍。
清除屏幕
现在,自从您开始本教程以来,您的屏幕上可能有很多东西。要腾出更多空间,只需输入以下命令:
>>> t.clear()
这将清理您的屏幕,以便您可以继续绘图。请注意,您的变量不会改变,海龟将保持在同一位置。如果屏幕上除了原始海龟之外还有其他海龟,那么除非您在代码中明确调用它们,否则它们的绘图将不会被清除。
重置环境
您还可以选择使用重置命令从头开始。屏幕将被清除,海龟的设置将全部恢复为默认参数。您需要做的就是输入以下命令:
>>> t.reset()
这会清除屏幕并将海龟带回其原始位置。您的默认设置,如海龟的大小、形状、颜色和其他特征,也将被恢复。
现在您已经学习了使用 Pythonturtle
库进行编程的基础知识,您将了解一些您可能希望在编程时使用的额外功能。
留下邮票
你留下的选项戳你的龟在屏幕上,这只不过是乌龟的印记。尝试输入此代码以查看其工作原理:
>>> t.stamp()
8
>>> t.fd(100)
>>> t.stamp()
9
>>> t.fd(100)
您的输出将如下所示:
出现的数字是海龟的位置或标记 ID。现在,如果你想删除一个特定的图章,那么只需使用以下内容:
>>> t.clearstamp(8)
这将清除邮票 ID 为 的那个8
。
克隆你的海龟
有时,您的屏幕上可能需要有不止一只乌龟。稍后您将在最终项目中看到这样的示例。现在,您可以通过将当前的海龟克隆到您的环境中来获得另一只海龟。尝试运行此代码以创建一个克隆海龟,c
然后在屏幕上移动这两个海龟:
>>> c = t.clone()
>>> t.color("magenta")
>>> c.color("red")
>>> t.circle(100)
>>> c.circle(60)
输出将如下所示:
惊人的!
既然您已经了解了 Pythonturtle
库中的一些重要命令,您就可以继续学习一些需要理解的概念。在使用任何语言进行编程时,都非常需要这些概念。
使用循环和条件语句
当您进入高级编程时,您会发现自己经常使用循环和条件语句。这就是为什么在本节中,您将学习几个使用这些类型命令的海龟程序。在理解这些概念时,这将为您提供实用的方法。但是,在开始之前,您需要记住以下三个定义:
- 循环是一组不断重复直到满足特定条件的指令。
- 条件语句根据满足的条件执行特定任务。
- 缩进用于定义代码块,尤其是在使用循环和条件语句时。通常,您可以通过点击Tab键盘上的键来创建缩进。
现在,让我们继续探索这些命令!
for
循环
你还记得你用来创建正方形的程序吗?您必须将同一行代码重复四次,如下所示:
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
一个更短的方法是在for
循环的帮助下。尝试运行此代码:
>>> for i in range(4):
... t.fd(100)
... t.rt(90)
在这里,thei
就像一个计数器,它从零开始并不断增加 1。当你说 时in range(4)
,你是在告诉程序 this 的值i
应该小于 4。它会在i
到达 4之前终止程序。
以下是该程序如何工作的细分:
- 在 i = 0 时,海龟向前移动 100 个单位,然后向右转 90 度。
- 在 i = 0 + 1 = 1 时,海龟向前移动 100 个单位,然后向右转 90 度。
- 在 i = 1 + 1 = 2 时,海龟向前移动 100 个单位,然后向右转 90 度。
- 在 i = 2 + 1 = 3 时,海龟向前移动 100 个单位,然后向右转 90 度。
然后海龟将退出循环。要检查 的值i
,请键入i
然后按Enter键。你会得到i
等于 3的值:
>>> i
3
请注意,程序中第 2 行和第 3 行之前的空格是缩进。这表明所有 3 行构成一个代码块。要了解有关for
Python 中循环的更多信息,请查看Python “for” Loops (Definite Iteration)。
while
循环
该while
循环使用而病情依然满足于执行特定任务。如果条件不再满足,则您的代码将终止该过程。您可以while
通过输入以下代码使用循环来创建一系列圆圈:
>>> n=10
>>> while n <= 40:
... t.circle(n)
... n = n+10
运行此代码时,您会看到圆圈一个接一个出现,并且每个新圆圈都会比前一个大:
在这里,n
用作计数器。您需要指定您希望 的值n
在每个循环中增加多少。看看这个迷你演练,看看程序是如何工作的:
-
在 n = 10 处,海龟绘制一个半径为 10 个单位的圆。之后, 的值
n
增加 10。 -
在 n = 20 时,海龟绘制一个半径为 20 个单位的圆。再次将 的值
n
增加 10。 -
在 n = 30 处,海龟绘制一个半径为 30 个单位的圆。第三次, 的值
n
增加了 10。 -
在 n = 40 处,海龟绘制一个半径为 40 个单位的圆。最后一次, 的值
n
增加了 10。 -
在 n = 50 时,
n
不再小于或等于 40。循环终止。
要阅读有关while
循环的更多信息,请查看Python“while”循环(无限迭代)。
条件语句
您可以使用条件语句来检查给定的条件是否为真。如果是,则执行相应的命令。尝试在这个程序中输入:
>>> u = input("Would you like me to draw a shape? Type yes or no: ")
>>> if u == "yes":
... t.circle(50)
input()
用于获取用户的输入。在这里,它会将用户的响应存储在变量 下u
。接下来,它将 的值与u
提供的条件进行比较,并检查 的值是否u
为"yes"
。如果是"yes"
,那么您的程序会画一个圆圈。如果用户输入任何其他内容,则程序将不会执行任何操作。
注意:比较运算符==
表示比较。它用于检查某个东西的值是否等于其他东西。赋值运算符=
用于为某物赋值。要了解有关两者之间差异的更多信息,请查看Python 中的运算符和表达式。
在语句中添加else
子句时if
,可以根据条件是真还是假来指定两个结果。让我们在一个程序中看到这一点:
>>> u = input("Would you like me to draw a shape? Type yes or no: ")
>>> if u == "yes":
... t.circle(50)
>>> else:
... print("Okay")
在这里,您告诉程序即使用户没有说 也显示特定的输出"yes"
。您用来print()
在屏幕上显示一些预定义的字符。
请注意,用户不需要键入"no"
。他们可以键入任何其他内容,在这种情况下,结果将始终是"Okay"
,因为您没有明确告诉程序用户需要键入"no"
。不过不用担心,因为这可以解决。您可以添加一个elif
子句,为程序提供多个条件及其各自的输出,如下所示:
>>> u = input("Would you like me to draw a shape? Type yes or no: ")
>>> if u == "yes":
... t.circle(50)
>>> elif u == "no":
... print("Okay")
>>> else:
... print("Invalid Reply")
如您所见,该程序现在有多个结果,具体取决于它收到的输入。下面是这段代码的工作原理:
-
如果您输入
"yes"
,则代码会根据您的说明处理输入并绘制一个圆圈。 -
如果您输入
"no"
,则代码会打印出来"Okay"
并且您的程序将终止。 -
如果您输入任何其他内容,例如
"Hello"
或"Sandwich"
,则代码将打印"Invalid Reply"
并且您的程序将终止。
请注意,此程序区分大小写,因此当您尝试它时,请务必相应地将字符串大写或小写。
要了解有关条件语句的更多信息,请查看Python 中的条件语句。
最终项目:Python 海龟竞赛
到目前为止,您已经学习了如何自定义您的海龟环境,编写您的海龟在屏幕上移动的程序,以及使用循环和条件语句来改进您的代码。现在是您编程旅程中最重要的部分的时候了。在本节中,您将通过创建一个可以与朋友一起玩的有趣游戏,将所学的所有内容都应用到一个程序中。
在开始之前,以下是您需要了解的有关游戏的信息:
-
目标:最先到达乌龟家的玩家获胜。
-
怎么玩:
- 每个玩家掷骰子得到一个数字。
- 然后玩家将他们的乌龟移动这么多步。
- 玩家轮流轮流,直到其中一个获胜。
-
结构:
- 每个玩家都有一只用不同颜色表示的乌龟。您可以有两个以上的玩家,但就本教程而言,您将创建一个两人游戏。
- 每只海龟都有一个它必须到达的起始位置。
- 每个玩家使用骰子随机选择一个值。在您的程序中,骰子由 1 到 6 的数字列表表示。
现在您已经了解了游戏的逻辑,您可以继续开始创建它!首先,您需要设置环境。
设置游戏环境
首先导入 Pythonturtle
库。在此之后,导入内置random
库,您将使用它从列表中随机选择一个项目:
import turtle
import random
一旦这些库成功调用到您的环境中,您就可以继续执行程序的其余部分。
设置海龟和家园
您现在必须创建代表玩家的两只海龟。每只乌龟都会有不同的颜色,对应不同的玩家。在这里,玩家一是绿色,玩家二是蓝色:
player_one = turtle.Turtle()
player_one.color("green")
player_one.shape("turtle")
player_one.penup()
player_one.goto(-200,100)
player_two = player_one.clone()
player_two.color("blue")
player_two.penup()
player_two.goto(-200,-100)
您已经创建了海龟,将它们放置在它们的起始位置并确保这些位置对齐。请注意,您通过克隆玩家一的海龟、更改其颜色并将其放置在不同的起点来创建玩家二的海龟。
您现在需要为海龟搭建家园。这些房屋将作为每只乌龟的终点。每只海龟的家都用一个圆圈表示。在这里,您需要确保两个家与起点的距离相等:
player_one.goto(300,60)
player_one.pendown()
player_one.circle(40)
player_one.penup()
player_one.goto(-200,100)
player_two.goto(300,-140)
player_two.pendown()
player_two.circle(40)
player_two.penup()
player_two.goto(-200,-100)
绘制各自的房屋后,您将海龟送回它们的起始位置:
惊人的!你的游戏的视觉方面是完整的。您现在可以创建用于玩游戏的骰子。
创建模具
您可以使用list为您的游戏创建一个虚拟骰子,这是一个有序的项目序列。在现实生活中,您可能会准备购物清单和待办事项清单以帮助您保持井井有条。在 Python 中,列表的工作方式类似。
在这种情况下,您将使用一个列表来创建您的模具。首先,按从 1 到 6 的升序定义数字列表。您可以通过给它一个名称然后将其项括在方括号中来定义一个列表,如下所示:
die = [1,2,3,4,5,6]
这个列表现在已经成为你的死法。要掷骰子,您所要做的就是对系统进行编程以从中随机选择一个数字。选择的数字将被视为骰子的输出。
开发游戏
是时候为游戏的其余部分开发代码了。您将在这里使用循环和条件语句,因此您需要小心缩进和空格。首先,查看您的程序运行游戏所需的步骤:
- 第 1 步:您将首先告诉您的程序检查任一乌龟是否已到达其家。
- 第 2 步:如果他们还没有,那么您将告诉您的程序允许玩家继续尝试。
- 第 3 步:在每个循环中,您告诉程序通过从列表中随机选择一个数字来掷骰子。
- 第 4 步:然后告诉它相应地移动相应的海龟,步数基于随机选择的结果。
程序不断重复这个过程,并在其中一只海龟到达目标时停止。代码如下所示:
1for i in range(20):
2 if player_one.pos() >= (300,100):
3 print("Player One Wins!")
4 break
5 elif player_two.pos() >= (300,-100):
6 print("Player Two Wins!")
7 break
8 else:
9 player_one_turn = input("Press 'Enter' to roll the die ")
10 die_outcome = random.choice(die)
11 print("The result of the die roll is: ")
12 print(die_outcome)
13 print("The number of steps will be: ")
14 print(20*die_outcome)
15 player_one.fd(20*die_outcome)
16 player_two_turn = input("Press 'Enter' to roll the die ")
17 die_outcome = random.choice(die)
18 print("The result of the die roll is: ")
19 print(die_outcome)
20 print("The number of steps will be: ")
21 print(20*die_outcome)
22 player_two.fd(20*die_outcome)
你的最终输出看起来有点像这样:
总之,这就是代码正在做的事情:
-
第 1 行设置了一个
for
范围为 1 到 20的循环。 -
第 2 行到第 7 行检查任一玩家是否已达到目标。如果其中之一有,则程序打印出相应的语句并中断循环。
-
如果双方都没有获胜,第 8行将程序移至下一组步骤。
-
第 9 行打印出一条语句,要求玩家一按下Enter键来掷骰子。
-
第 10 行从列表中获取一个随机值
die
并将其存储在die_outcome
. -
第 11行在显示掷骰结果之前打印一条语句。
-
第 12 行打印骰子结果。
-
第 14 行将此值乘以 20,以减少完成游戏所需的总步数。
-
第 15行将玩家的海龟向前移动此步数。
-
第 16 到 22 行为玩家 2 重复这些步骤。
for
重复整个循环,直到玩家的一只海龟到达最终位置。
注意:在 Python 中,您使用星号 ( *
) 表示乘法。这称为算术运算符。您还可以使用加号 ( +
) 进行加法,使用减号 ( -
) 进行减法,使用斜线 ( /
) 进行除法。要了解有关算术运算符的更多信息,请查看Python 中的运算符和表达式的算术运算符部分。
请记住,您可以随心所欲地自定义游戏,所以继续玩吧!你可以添加更多的海龟、改变颜色、改变速度,甚至创造一些障碍来挑战你的玩家。作为游戏的开发者,这一切都取决于您!
结论
在本教程中,您学习了如何使用 Pythonturtle
库进行编程并掌握了一些非常重要的编程概念。您知道如何处理变量初始化、循环、条件语句、缩进、列表和运算符。这对您来说是一个很好的开始,特别是如果您是 Python 编程语言的新手!
现在你可以:
-
设置Python
turtle
库 - 移动你的乌龟
- 自定义您的海龟及其环境
- 编程你的乌龟
- 使用基本的编程概念
- 创建一个你可以和朋友一起玩的游戏
一些乌龟方法
方法 |
范围 |
描述 |
Turtle() |
没有任何 |
它创建并返回一个新的海龟对象 |
forward() |
数量 |
它将海龟向前移动指定的量 |
backward() |
数量 |
将海龟向后移动指定的量 |
right() |
角度 |
它顺时针转动乌龟 |
left() |
角度 |
它逆时针转动乌龟 |
penup() |
没有任何 |
它拿起乌龟的笔 |
pendown() |
没有任何 |
放下乌龟的笔 |
up() |
没有任何 |
拿起乌龟的笔 |
down() |
没有任何 |
放下乌龟的笔 |
color() |
颜色名称 |
改变乌龟笔的颜色 |
fillcolor() |
颜色名称 |
更改用于填充多边形的海龟的颜色 |
heading() |
没有任何 |
它返回当前标题 |
position() |
没有任何 |
它返回当前位置 |
goto() |
x, y |
它将海龟移动到位置 x,y |
begin_fill() |
没有任何 |
记住填充多边形的起点 |
end_fill() |
没有任何 |
它关闭多边形并用当前填充颜色填充 |
dot() |
没有任何 |
将点留在当前位置 |
stamp() |
没有任何 |
在当前位置留下海龟形状的印象 |
shape() |
形状名称 |
应该是“箭头”、“经典”、“乌龟”或“圆圈” |
示例代码
import turtle
my_window = turtle.Screen()
my_window.bgcolor("blue") # creates a graphics window
my_pen = turtle.Turtle()
my_pen.forward(150)
my_pen.left(90)
my_pen.forward(75)
my_pen.color("white")
my_pen.pensize(12)
turtle.done()
输出
画一个正方形
示例代码
import turtle
my_pen = turtle.Turtle()
for i in range(4):
my_pen.forward(50)
my_pen.right(90)
turtle.done()
输出
画一颗星星
示例代码
import turtle
my_pen = turtle.Turtle()
for i in range(50):
my_pen.forward(50)
my_pen.right(144)
turtle.done()
输出
画一个六边形
示例代码
import turtle
polygon = turtle.Turtle()
my_num_sides = 6
my_side_length = 70
my_angle = 360.0 / my_num_sides
for i in range(my_num_sides):
polygon.forward(my_side_length)
polygon.right(my_angle)
turtle.done()
输出
在另一个方框内画一个正方形。
示例代码
import turtle
my_wn = turtle.Screen()
my_wn.bgcolor("light blue")
my_wn.title("Turtle")
my_pen = turtle.Turtle()
my_pen.color("black")
def my_sqrfunc(size):
for i in range(4):
my_pen.fd(size)
my_pen.left(90)
size = size - 5
my_sqrfunc(146)
my_sqrfunc(126)
my_sqrfunc(106)
my_sqrfunc(86)
my_sqrfunc(66)
my_sqrfunc(46)
my_sqrfunc(26)
turtle.done()
输出
绘制另一种图案
示例代码
import turtle
my_wn = turtle.Screen()
turtle.speed(2)
for i in range(30):
turtle.circle(5*i)
turtle.circle(-5*i)
turtle.left(i)
turtle.exitonclick()
turtle.done()
输出
绘制另一种图案
示例代码
import turtle
colors = [ "red","purple","blue","green","orange","yellow"]
my_pen = turtle.Pen()
turtle.bgcolor("black")
for x in range(360):
my_pen.pencolor(colors[x % 6])
my_pen.width(x/100 + 1)
my_pen.forward(x)
my_pen.left(59)
turtle.done()