《Python趣味工具》——自制emoji3

这篇具有很好参考价值的文章主要介绍了《Python趣味工具》——自制emoji3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日目标
在上次,我们绘制了静态的emoji图。并且总结了turtle中的常用函数。

本次我们将尝试制作一个动态的emoji,让你的表情包动起来!


《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


一、动画原理:

动画的原理简单来说就是一张张图片快速切换而成。

要在turtle中实现动画的效果,同样可以通过图片快速切换的方式来实现。


二、制作动画:

那怎么制作动画呢?我们通过对比观察两张图片,发现唯一的不同点是黑眼珠的位置不同。

而修改眼珠的位置,只需要修改绘制时移动的步数就可以了,然后不断的动可以看作循环打印,即循环调用绘制函数就好啦!
《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言
下面我们来对原来的函数进行一定的修改:

1. 修改eyes_black()函数:

我们上次已经绘制好了一侧的眼球:详见《Python趣味工具》——自制emoji2
而我们在绘制另一侧眼珠时,只需要修改移动步数——也就是将forward(6),改为forward(60)即可。(这里具体的移动大小可以自己预先算出来,包括后面的每一步都一样)

下面我们修改eyes_black()函数,为它设置一个参数x,代表移动的步数。

#  TODO 定义一个eyes_black()函数绘制黑眼珠,参数为x
def eyes_black(x):

    # 使用seth()函数将角度设置为0
    seth(0)
    
    # 使用forward()函数前进x步
    forward(x)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用pensize()函数设置画笔粗细为15
    pensize(15)
    
    # 使用pencolor()函数设置画笔颜色为"black"
    pencolor("black")
    
    # 使用circle()函数绘制一个半径为5,圆心角为360度
    circle(5,360)
    
    # 使用penup()函数抬笔
    penup()
    
    # 使用forward()函数前进110步
    forward(110)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用circle()函数绘制一个半径为5的圆
    circle(5,360)
    
    # 使用hideturtle()函数隐藏画笔
    hideturtle()

《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


2. 绘制表情包文字:

接下来我们需要制作表情包文字。

步骤如下:

  1. 用input函数邀请用户输入自定义文字内容。
  2. 定义一个write_emoji()函数书写文字内容。
    《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言

具体怎么输出文字我们在《Python趣味工具》——自制emoji(1)绘制爱心应援牌❤️里已经讲过了,大家可以自行参考。

# 使用input()函数引导用户输入表情包语录
# 文案内容为"请输入表情包语录:"
content=input("请输入表情包语录:")

# 定义一个write_emoji()函数书写文字 
def write_emoji():

    # 使用penup()函数抬起画笔
    penup()
    
    # 使用fillcolor()函数将填充颜色设置为black
    fillcolor("black")
    
    # 使用goto()函数移到坐标点为(0,-170)的位置
    goto(0,-170)
    
    # 使用write()函数设置书写内容
    # 文字内容为content,居中方式为align = "center",字体类别,大小和粗细为font=("Arial",25,"bold")
    write(content,align="center",font=("Arial",25,"bold"))
    


3. 定义emoji函数(汇合所有函数):

我们已经分别定义函数绘制了emoji的每一个部分。

接下来我们可以拼接函数完成整个emoji的绘制。

《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言
完成绘制表情包的函数,分为3步:

1.定义函数emoji(x)绘制表情包,参数x表示黑眼珠移动距离。

2.函数包含:draw_face(),draw_mouth(),eyes_white(),eyes_black(x),write_emoji()共5个部分。

3.调用emoji(x)函数,将参数设置为60,绘制黑眼珠在右侧的表情包。

# 定义一个函数绘制emoji绘制表情,参数x表示移动位置
def emoji(x):

    # 使用draw_face()函数绘制脸部
    draw_face()
    
    # 使用draw_mouth()函数绘制嘴巴
    draw_mouth()
    
    # 使用eyes_white()函数绘制白眼珠
    eyes_white()
    
    # 使用eyes_black(x)函数绘制黑眼珠,参数x表示移动距离
    eyes_black(x)
    
    # 使用write_emoji()函数书写表情包文字
    write_emoji()
    
# 调用emoji(x)函数,将参数设置为60,绘制表情2
emoji(60)

《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


4. 动画切换:

接下来我们要完成最重要的动画部分啦~

根据动画的实现原理,我们可以将两张emoji图片反复切换播放,实现动图效果,也就是:

  1. 展示emoji1
  2. 刷新屏幕
  3. 暂停一段时间(这个根据自己的实际情况看着写,不停顿效果可能会很鬼畜)
  4. 展示emoji2
# 设置一个计数器,从0开始计数   
n = 0

# 当计数小于10时
while n < 10:  

    # 使用tracer()函数,关闭动画
    tracer(0)
    
    # 绘制表情包1,emoji(6)
    emoji(6)
    
    # 使用update()函数刷新画面
    update()
    
    # 使用time.sleep()函数停顿0.5秒
    time.sleep(0.5)
    
     # 使用tracer()函数,关闭动画
    tracer(0)
    
    # 绘制表情包2,emoji(60)
    emoji(60)
    
    # 使用update()函数刷新画面
    update()
    
    # 使用time.sleep()函数停顿0.5秒
    time.sleep(0.5)
    
    # 计数器加1
    n = n + 1

第1-4行代码的作用是设置一个计数器,设置表情包的动画次数。我们将表情包的动画次数设置为10次。你在本地完成时可以修改次数,甚至一直让它动起来。

第5-12行代码的作用是绘制表情包1,并刷新画面,等待一段时间。

第13-20行代码的作用是绘制表情包2,并刷新画面,等待一段时间。

第21-22行代码的作用是计数器加1.


update()

一个函数,用于刷新画面。

在替换下一张图片前需要刷新画面,我们可以使用update()函数来实现。

在图形绘制完毕后,再使用update()函数,就可以看到当前绘制好的整个图形。


tracer(0)

一个函数,作用是控制turtle动画播放的开关。

可以用来调整绘画速度或者关闭/打开绘画过程。

比如:
我们知道,小海龟🐢走过的地方会留下它的轨迹。往前移动一点,线条就变长一点。但是如果我们想直接看到绘图结果,不想看到这样的更新过程呢?

使用tracer(0)函数,可以关闭了轨迹,即我们看不到小海龟的爬行过程。


上下两个动图分别为没有用tracer函数,和使用tracer(0)+update()函数的效果:
《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


三、完整源码:

完结撒花~🎉🎉🎉,我们已经制作出了自己的第一个GIF动图,下面附上源代码,相信你也是跃跃欲试吧!

# 导入turtle中的全部函数
from turtle import *

# 使用input()函数引导用户输入表情包语录
# 文案内容为"请输入表情包语录 :"
content = input("请输入表情包语录 :")

# 定义draw_face()函数绘制脸部
def draw_face():

    # 抬起画笔
    penup()
    
    # 移动到坐标点为(-120,0)的地方
    goto(-120,0)
    
    # 落笔
    pendown()
    
    # 将画笔颜色设置为黑色"black"
    pencolor("black")
    
    # 将画笔粗细设置为4
    pensize(4)
    
    # 调整海龟朝向-90度方向
    seth(-90)
    
    # 开始填充颜色
    begin_fill()
    
    # 画圆,圆的半径为130,圆心角为360度
    circle(130,360)
    
    # 填充颜色为"gold"
    fillcolor("gold")
    
    # 停止填充颜色
    end_fill()
    
# 定义draw_mouth() 函数绘制嘴巴   
def draw_mouth():

    # 抬起画笔
    penup()
    
    # 移动到坐标点为(-80,-10)的位置
    goto(-80,-10)
    
    # 落笔
    pendown()
    
    # 调整海龟朝向-90度方向
    seth(-90)
    
    # 绘制一个半径为90,圆心角为180的半圆
    circle(90,180)
    
# 定义eys_white()函数绘制眼白   
def eyes_white():

    # 使用penup()函数抬起画笔
    penup()
    
    # 使用forward()函数往前直走60步
    forward(60)
    
    # 使用seth()函数将角度调整为155度
    seth(155)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用pensize()函数设置画笔粗细为20
    pensize(20)
    
    # 使用pencolor()函数设置画笔颜色为"white"
    pencolor("white")
    
    # 使用circle()函数绘制一个半径为100,圆心角为45的弧形
    circle(100,45)
    
    # 使用penup()函数抬笔
    penup()
    
    # 使用seth()函数朝向180度方向
    seth(180)
    
    # 使用forward()函数向前走40步
    forward(40)
    
    # 使用seth()函数将角度调整为155度
    seth(155)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用circle()函数绘制一个半径为100,圆心角为45度的圆弧
    circle(100,45)
    
    # 使用penup()函数抬笔
    penup()

#  定义一个eyes_black()函数绘制黑眼珠,参数为x
def eyes_black(x):

    # 使用seth()函数将角度设置为0
    seth(0)
    
    # 使用forward()函数前进x步
    forward(x)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用pensize()函数设置画笔粗细为15
    pensize(15)
    
    # 使用pencolor()函数设置画笔颜色为"black"
    pencolor("black")
    
    # 使用circle()函数绘制一个半径为5,圆心角为360度
    circle(5,360)
    
    # 使用penup()函数抬笔
    penup()
    
    # 使用forward()函数前进110步
    forward(110)
    
    # 使用pendown()函数落笔
    pendown()
    
    # 使用circle()函数绘制一个半径为5的圆,圆心角为360度
    circle(5,360)
    
    # 使用hideturtle()函数隐藏画笔
    hideturtle()
    
# 定义一个write_emoji()函数书写文字 
def write_emoji():

    # 使用penup()函数抬起画笔
    penup()
    
    # 使用fillcolor()函数将填充颜色设置为black
    fillcolor("black")
    
    # 使用goto()函数移到坐标点为(0,-170)的位置
    goto(0,-170)
    
    # 使用write()函数设置书写内容
    # 文字内容为love,居中方式为align = "center",字体类别,大小和粗细为font=("Arial",25,"bold")
    write(content,align = "center",font=("Arial",25,"bold"))     

# 定义一个函数绘制emoji绘制表情,参数x表示移动位置
def emoji(x):

    # 使用draw_face()函数绘制脸部
    draw_face()
    
    # 使用draw_mouth()函数绘制嘴巴
    draw_mouth()
    
    # 使用eyes_white()函数绘制白眼珠
    eyes_white()
    
    # 使用eyes_black(x)函数绘制黑眼珠,参数x表示移动距离
    eyes_black(x)
    
    # 使用write_emoji()函数书写表情包文字
    write_emoji()
    
# 导入time函数
import time

# 设置一个计数器,从0开始计数   
n = 0

# 当计数小于10时
while n < 10:

    # 使用tracer()函数,关闭动画
    tracer(0)
    
    # 绘制表情包1,emoji(6)
    emoji(6)
    
    # 使用update()函数刷新画面
    update()
    
    # 使用time.sleep()函数设置停顿时间0.5秒
    time.sleep(0.5)
    
    # 使用tracer()函数,关闭动画
    tracer(0)
    
    # 绘制表情包2,emoji(60)
    emoji(60)
    
    # 使用update()函数刷新画面
    update()
    
    # 使用time.sleep()函数设置停顿时间0.5秒
    time.sleep(0.5)
    
    # 计数器加1
    n = n + 1
    
# 使用done()函数使得程序不会自动退出    
done()    

四、拓展讲解:

1. Python模块的安装:

在实际使用中,我们发现有的模块需要安装,但有的不需要,这是怎么回事呢?原因在于有的模块是内置的,有的是第三方提供的:

1.内置模块,是你下载了Python编辑器就自带的模块,在使用中,不需要安装,只需要导入就可以

2.第三方模块,就需要你在终端安装并且在编辑器导入了。

类比一下就是,标准模块是你手机买到就安装的App,而第三方模块就是你自己去要应用市场下载的App。
《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言

time,turtle是内置模块所以不需要在终端安装!


2. turtle模块和函数的用法总结:

打个比方来说,下载了某个App后我们当然要使用里面的功能

而调用函数其实就是在使用模块中的功能。


模块的导入方法:

方法1: import turtle 导入模块后,程序知道我们有了turtle这个库却不知道有哪些函数。
使用时需要用turtle.pensize()这样的方法。

方法2:from turtle import *导入所有函数时,相当于把所有函数都装进来了,就可以直接使用其中的函数了!

《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言
不同的模块导入的具体内容可能有些差异,但结构相似


turtle的角度:

1.相对角度
以海龟的朝向为基准进行转向。
例如:left(),right()

2.绝对角度
以坐标轴方向为基准调整角度。
例如:seth()

《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言


《Python趣味工具》——自制emoji3,《Python项目实战》,python,开发语言文章来源地址https://www.toymoban.com/news/detail-725347.html

到了这里,关于《Python趣味工具》——自制emoji3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Anomalib项目的padim无监督算法 进行自制工业缺陷数据集的模型训练和ONNX部署(二)——Python代码解读篇

    目录 前言 一、padim算法onnx模型输入输出解读 二、padim算法Python代码处理流程分析 2.1 预处理部分 2.2 预测部分 2.3 后处理部分 2.4 可视化部分 三、总结与展望         上一篇博客中完成了Anomalib中padim算法的模型训练,得到了onnx模型以及推理的效果,想看这部分的同学可以

    2024年02月06日
    浏览(32)
  • 微信小程序项目实例——图片处理小工具(自制低配版美图秀秀)

    项目代码见文字底部,点赞关注有惊喜 这是一款实用的工具型小程序 共有滤镜、效果图和动态滤镜三个功能 用户可以选择想要处理的图片,设置模糊、怀旧、复古、美白以及其他效果 同时程序还增设了效果图功能 用户可以自行调整饱和度、亮度和对比度 此外程序还有动态

    2024年02月09日
    浏览(30)
  • python趣味编程-数独游戏

    数独游戏 是一个用 Python 编程语言编写的应用程序。该项目包含可以显示实际应用程序的基本功能。该项目可以让修读 IT 相关课程并希望开发简单应用程序的学生受益。这个 Python 数独游戏 是一个简单的项目,可用于学习 tkinter 库的实践。这个 数独游戏 可以提供Python编程的

    2024年02月09日
    浏览(31)
  • Python趣味入门14:类的继承

    小牛叔带你轻松飞越Python类的门槛 继承最好的示例竟然是病毒复制。类似于COVID-19病毒全球肆虐,病毒复制变异的过程就是下一代继承上一代部分特性,并发展出新特性的过程(如下图)。 病毒的变异来源于DNA(RNA)蛋白质突变 因此编程中的继承,也具有如下两个特征: 复制

    2024年02月03日
    浏览(28)
  • Python趣味算法入门 - 百钱百鸡

    问题描述 中国古代数学家张邱建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只? 分析 这也是经典问题了,在数学上其实不过就是多元一次方程组。如果用

    2024年02月06日
    浏览(33)
  • Python趣味代码(一):微信信息轰炸

            首先需要在电脑上安装好pyautogui、pyperclip两个模块         将整个流程分为三大块:                 一、获取发信内容                 二、获取收信方名单                 三、打开微信启动复制粘贴内容流程,设置发送间隔         因为板块分明,使用函

    2024年02月01日
    浏览(24)
  • Python趣味入门12:初遇类与实例

    小牛叔用轻松有趣的故事,带你进入Python的编程世界。 一提到类大神们就经常说封装。说白了,封装即把围绕同一个对象相同的代码、数据整合在一起。比如在某段游戏代码中(比如熊猫厨房),有一个“面包”: 1、游戏提供“烘烤”的操作。 - 很明显这是动作 - 类的方法

    2024年02月04日
    浏览(35)
  • Python趣味入门13:类中的各种变量

    其中我们已知道定义变量在类中就表示为属性。但是在不同的位置定义变量会有不同的作用,并且采用不同的命名方式,也会让变量具有不同的作用 本文假设有一个类指南针(compass),可想象成某个地图游戏中帮助主角寻找方向,也是本节主要的示例。 compass类的定义如下代

    2024年02月04日
    浏览(30)
  • Python入门实战:Python的项目部署

    项目部署是指将项目代码从开发环境运送到线上运行环境并让生产环境运行起来。部署过程是项目启动的最后一步,也是项目启动的关键环节,其目的是让客户使用产品或服务。这就需要运用各种专业技能、知识、工具来完成项目的开发、测试、编译、打包、发布等流程,最

    2024年03月09日
    浏览(34)
  • Python可视化工具库实战

    Matplotlib Matplotlib 是 Python 的可视化基础库,作图风格和 MATLAB 类似,所以称为 Matplotlib。一般学习 Python 数据可视化,都会从 Matplotlib 入手,然后再学习其他的 Python 可视化库。 Seaborn  Seaborn 是一个基于 Matplotlib 的高级可视化效果库,针对 Matplotlib 做了更高级的封 装,让作图

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包