日期:2025/04/03 10:50来源:未知 人气:54
前面内容,我们介绍了如何利用Turtle库画一个可爱的笑脸。
python做简单的笑脸的编程,基础扎实,海龟绘图也可以游刃有余!
我们知道,Turtle库在绘图时,默认有一只小乌龟在屏幕上移动,通过它移动的轨迹,我们进行绘图。
海龟
上篇文章中,有小伙伴留言询问:如何改变Turtle画笔的形状,就是把那只可爱的小乌龟用其它形状替换(那还是Turtle库吗?^-^),但是这样个性化设置我们可以制作动画了。
实现各种动画效果
今天,我们安排解决一下这个问题。
解决问题之前,我们先来了解下Turtle库中画笔形状除了小乌龟,还有哪些画笔形状?
01默认画笔形状
我们还是通过一个案例来进行演示,从案例中我们学习小乌龟的一些常用函数。
获取画笔形状很简单,直接使用下面的方法:
import turtleprint(turtle.getshapes())我们打印输出看下结果
['arrow', 'blank', 'circle', 'classic', 'square', 'triangle', 'turtle']
字面意思了解,应该是:
【箭头,空白,圆,经典样式,方形,三角形,乌龟】
很好奇,它们到底长啥样呢?我们利用一个程序来将它们展现出来
程序展示海龟样式
好了,原来它们长这样,那么这些默认样式如何应用到海龟的画笔上呢,一个函数搞定
turtle.shape(name='classic') # 将样式设置为经典箭头其它样式直接改变name参数即可。
还有一个问题,上面七个默认形状看起来比平时大一点?当然了,这里用代码进行了调整
t.turtlesize(3, 3, 1)这里将其长度、宽度扩大了3倍,形状边框没有发生变化。
别着急,文末赠送代码哦!
文末附赠代码
我们知道,海龟的运动轨迹可以绘图,那么,我们能不能自己画一个样式,然后将这个样式应用到海龟的形状上面呢?带着这个问题,我们接着往下看!
02自己用海龟画一个形状
额,自己画一个形状?画什么形状呢?那就把我们上一篇文章中的笑脸画出来作为它的形状怎么样?其实可以的,但是今天我们再不重复之前的内容了,这个课题交给小伙伴自己去实现吧。
这里我们制作一个五角星的形状!这是个大胆的想法,小伙伴跟我去实现它吧
我们先把五角星画出来,就几行代码,也很好理解。
绘制五角星效果展示
五角星画出来了,那么,我们如何把它变成小海龟的一个形状呢?需要注意下面几个问题:
1.作为形状,它应该是静态的(禁用小海龟运动的动画,暂时这么理解),那么,我们如何把它变成静态的(不展示动画)?
turtle.tracer(False)
将参数设置为False时,不展示海龟运动的动画。问题就好解决了,开始画形状之前,将动画禁用,画完形状后启用动画即可。
2.如何获得海龟运动的轨迹图像?
turtle.begin_poly() # 开始记录海龟运动轨迹的点…… # 这里是海龟运动的控制相关代码turtle.end_poly() # 结束记录shape = turtle.get_ploy() # 获得形状定点obj,这里的obj虽然类型为tuple,但 # 我们可以把它当做一个形状对象来处理这样,我们就获得了海龟的轨迹图像,它可以作为一个形状来使用
3.如何把我们画出来的形状添加到海龟默认形状中呢?
还以一个函数搞定!
turtle.register_shape("shapename",shape) # 这里的shape就是第二个问题 # 里面提到的shape我们来整合下代码,然后利用我们添加的形状再绘制一个正方形,效果见下图
自定义海龟形状并绘图
从上面的例子中我们可以看出,自定义形状是没有颜色的,默认填充为黑色。
演示例子中间是我们定义的图形,然后我们利用这个图形进行绘图,让它绘制一个正方形。文末有获取代码方式。
如何自定义形状?
好了,这样就结束了?其实并没有,我们在使用Turtle时,耗费大量时间去画乌龟形状,那显然是得不偿失的,如果有现成的图片文件供我们使用,那是最有效的办法。
Turtle库的设计者已经替我们考虑到了,接着往下看!
03海龟可以用动态图片替代?
除了自己绘制的图形,它可以使用gif图片代替,这样你就可以用任意gif格式图片代替海龟的形状了,使用方法如下
turtle.register_shape('runner.gif') # 先注册t.shape('runner.gif') # 使用怎么样?是不是很简单?
我们来看下面一个例子
使用gif图片后效果
这个是直接使用gif图片的效果,喜欢的小伙伴自己试试看吧!
好了,今天的内容就到这里了,喜欢Python编程的小伙伴关注我,后续推出更加精彩的内容,小伙伴们有好的想法,欢迎下方留言,我会第一时间关注!
关注我,私信“turtlestyle”获取今天的几个例子源代码。
本文为作者原创,转载请注明出处,百家号:Python高手养成