02-Python turtle 模块精讲(二)

简介: 内容

画笔控制

我们可以控制画笔的起笔和落笔,以决定是否在屏幕上留下运动的轨迹。


当调用 penup() 方法,表示起笔,在此状态下不会画出运动的轨迹;

当调用 pendown() 方法,表示落笔,在此状态下会画出运动的轨迹。

我们可以这么理解,海龟拿了一支笔,这只笔或朝上或朝下,当笔朝上时,海龟在移动过程中什么也不画,当笔朝下时,海龟用笔画下自己的轨迹。


我们把刚才绘制风筝的代码稍作修改,现在,在画布的中央及上、下、左、右 4 个角,绘制出 5 个类似的风筝头,并且将绘制的速度提高到 10。代码如下。


17.png

17.png18.png

图 8

色彩

海龟绘图并不是只能够用黑色画笔绘图,还可以使用其他颜色画笔,甚至可以为图形填充颜色。下面我们来介绍几个和颜色相关的函数。


pencolor:设置画笔颜色;


fillcolor:设置填充颜色;


begin_fill:填充形状前调用;


end_fill:填充形状后调用。


光线有 3 种主要的颜色:红色、绿色和蓝色(红色、蓝色和黄色是绘画和颜料的主要颜色,但是计算机显示器使用的是光,而不是颜料)。通过将这 3 种颜色的不同的量组合起来,可以形成任何其他的颜色。


在 Pygame 中,我们使用 3 个整数的元组来表示颜色。元组中的第 1 个值,表示颜色中有多少红色。为0的整数值表示该颜色中没有红色,而 255 表示该颜色中的红色达到最大值。第 2 个值表示绿色,而第 3 个值表示蓝色。这些用来表示一种颜色的 3 个整数的元组,通常称为 RGB 值(RGB value)。


由于我们可以针对 3 种主要的颜色使用 0~255 的任何组合,这就意味着 Pygame 可以绘制 16 777 216 种不同的颜色,即 256×256×256 种颜色。然而,如果试图使用大于 255 的值或负值,将会得到类似ValueError: invalid color argument 的一个错误。


例如,我们创建元组 (0, 0, 0) 并且将其存储到一个名为 BLACK 的变量中。没有红色、绿色和蓝色的颜色量,最终的颜色是完全的黑色。黑色实际上就是任何颜色值都没有。元组 (255, 255, 255) 表示红色、绿色和蓝色都达到最大量,最终得到白色。白色是红色、绿色和蓝色的完全的组合。元组 (255, 0, 0) 表示红色达到最大量,而没有绿色和蓝色,因此,最终的颜色是红色。类似的,(0, 255, 0) 是绿色,而 (0, 0, 255) 是蓝色。


我们通过一个简单的示例,来看看如何使用色彩:


首先,调用 pencolor() 方法将画笔设置为红色,接着调用 fillcolor() 方法将填充色设置为绿色;


然后调用 begin_fill() 方法,表示要开始填充;


接下来,调用 circle() 方法绘制圆,画笔是红色的,填充是绿色的,半径为 90 像素;


最后,调用 end_fill() 方法结束填充。


代码如下。


19.png

运行一下,绘制的图形效果如图 9 所示。20.png21.png

图9

除了可以直接输入颜色的“英文名称”(如上面的示例代码中的 red、green),我们还可以直接指定颜色的 RGB 色彩值。


海龟绘图专门有一个 colormode 函数用来指定 RGB 色彩值范围为 0~255 的整数或者 0~1 的小数。当参数是 255 的时候,表示采用 0~255 的整数值;当参数是 1.0 的时候,表示采用 0 到 1 的小数值。我们来看一个示例,代码如下。

22.png


我们两次调用了 colormode() 函数,第一次传给它的参数是 255,而后一次调用 pencolor() 函数就用 0 到 255 之间的整数作为参数来表示 RGB 色彩值,表示画笔的颜色是粉红色。然后绘制了一个大圆。


接下来我们再次调用 colormode() 函数,而后一次调用 pencolor() 函数就用 0 到 1 之间的小数作为参数来表示 RGB 色彩值,表示画笔的颜色是棕色。然后绘制了一个小圆。运行代码,得到的效果如图 10 所示。

23.png

图10


19.png


目录
相关文章
|
22天前
|
XML Shell API
python ConfigParser、shutil、subprocess、ElementTree模块简解
python ConfigParser、shutil、subprocess、ElementTree模块简解
|
21天前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
34 1
|
9天前
|
Java Serverless Python
探索Python中的并发编程与`concurrent.futures`模块
探索Python中的并发编程与`concurrent.futures`模块
14 4
|
21天前
|
API Python
python ratelimit模块
python ratelimit模块
|
21天前
|
Python
像导入Python模块一样导入ipynb文件
像导入Python模块一样导入ipynb文件
|
21天前
|
Python
如何最简单、通俗地理解Python模块?
如何最简单、通俗地理解Python模块?
|
21天前
|
算法 Python
python tarfile模块
python tarfile模块
|
22天前
|
SQL 关系型数据库 MySQL
Python之MySQL操作及Paramiko模块操作
Python之MySQL操作及Paramiko模块操作
|
22天前
|
存储 JSON JavaScript
python序列化: json & pickle & shelve 模块
python序列化: json & pickle & shelve 模块
|
20天前
|
Python
如何在 Python 中导入模块
【8月更文挑战第29天】
20 1