《Python趣味工具》——自制emoji2(2)
今天,我们将会完成以下2个内容:
- 绘制静态emoji
- 总结turtle中常用的绘图函数
文章目录
- 一、绘制静态emoji:
- :sparkles: 画脸:
- :sparkles:绘制嘴巴:
- :sparkles:绘制眼白:
- 绘制眼白-Part1:
- 绘制眼白—part2:
- :sparkles:绘制黑眼珠:
- 三、完整代码:
- 四、函数函数总结:
- 运动控制命令:
- 画笔控制命令:
- 全局控制命令:
一、绘制静态emoji:
绘制方法:拆解绘制法
将绘图步骤拆解完成后,标记出各个部分的起始坐标点位,方便后面绘图。
✨ 画脸:
首先我们绘制圆脸部分,主要步骤是:
1.定义一个绘制圆脸的函数
2.用黑色画笔画圆
3.用金色填充圆的内部
示例代码如下:
# 从turtle模块中导入所有函数
from turtle import *
# 定义draw_face()函数绘制脸部# 首先,定义一个draw_face()函数绘制脸部
def draw_face():
# 进入函数的主体部分后,第一步需要将小乌龟放置到我们期待的位置:(-120,0)# 抬起画笔penup()# 移动到坐标点为(-120,0)的地方goto(-120,0)# 落笔pendown()# 将画笔颜色设置为黑色"black"pencolor("black")# 将画笔粗细设置为4pensize(4)# 调整海龟朝向-90度方向seth(-90)# 开始填充颜色begin_fill()# 画圆,圆的半径为130,圆心角为360度circle(130,360)# 填充颜色为"gold"fillcolor("gold")# 停止填充颜色end_fill()
相关步骤如下:
1.定义函数,设置初始位置
为了避免留下小乌龟从初始位置移动到(-120,0)的轨迹,我们可 以:
🐢penup()抬起小乌龟
🐢goto()把小乌龟移动到目标位置
🐢再使用pendown()放下小乌龟
2.设置颜色、大小和朝向
设置画笔颜色和大小:
🐢使用pencolor()将画笔颜色设置为黑色’‘black’',
🐢使用pensize()函数将画笔粗细设置为4.
3.设置画笔的朝向:
为了圆脸的位置正确,需要把小乌龟的头竖直向下放置:
使用seth()函数,设置画笔朝向-90度的方向开始绘制。
⭐️两种调整角度的方法
- 1.相对角度
以海龟的朝向为基准进行转向。
例如:left(),right()- 2.绝对角度
以坐标轴方向为基准调整角度。
例如:seth()
4.绘制圆并填充颜色
绘制圆:
使用circle()函数设置圆的半径为130,圆心角度为360度
填充颜色:
🐢用fillcolor()函数将填充颜色设置为"gold"
🐢用begin_fill()函数设置填充起点
🐢用end_fill()函数设置填充终点
✨绘制嘴巴:
绘制嘴巴可以分为以下几步:
1.画笔移动到坐标点(-80,-10)的位置。
2.朝向-90度的方向
3.绘制一个半径为90的半圆。
# 定义draw_mouth() 函数绘制嘴巴
def draw_mouth():# 抬起画笔penup()# 移动到坐标点为(-80,-10)的位置goto(-80,-10)# 落笔pendown()# 调整海龟朝向-90度方向seth(-90)# 绘制一个半径为90,圆心角为180的半圆circle(90,180)
相关步骤如下:
1.设置画笔的初始位置:
和前面绘制圆脸一样,我们也需要使用penup()等函数,将动小乌龟到目标位置:(-80,-10)
2.设置画笔的朝向:
为了嘴巴的位置正确,我们也需要把小乌龟的头竖直向下放置:seth(-90)
3.绘制嘴巴:
使用circle()函数设置圆的半径为90,圆心角度为180度
✨绘制眼白:
思考一下,眼白可以怎么绘制呢?
1.从嘴角位置向上直走60步
2.将海龟角度设置为155度
3.将画笔颜色设置为白色,粗度为20
4.绘制一个半径为100,圆心角为45度的圆弧
绘制眼白-Part1:
相关步骤如下:
1.设置画笔的初始位置:
🐢移动到目标位置前,使用penup()隐藏移动痕迹
🐢在绘制完嘴巴的基础上,我们直接前进60步,即可到达目标位置:forward(60)
🐢到达后,使用pendown()将小乌龟放置到画布上~
2.设置画笔的朝向:
将海龟角度设置为155度:seth(155)
3.设置画笔的粗细和颜色:
🐢使用pencolor()将画笔颜色设置为白色’‘white’',
🐢使用pensize()函数将画笔粗细设置为20.
4.绘制眼白:
使用circle()函数设置圆的半径为100,圆心角度为45度
示例代码如下:
# 定义eyes_white()函数绘制眼白
def eyes_white():# 抬起画笔penup()# 往前直走60步forward(60)# 将角度调整为155度seth(155)# 落笔pendown()# 设置画笔粗细为20pensize(20)# 设置画笔颜色为"white"pencolor("white")# 绘制一个半径为100,圆心角为45的弧形circle(100,45)# 抬笔penup()
ps.绘制完记得抬起小乌龟
绘制眼白—part2:
绘制第二部分的眼白也是类似的:
- 抬起画笔,朝向180度的方向(正左)移动40步
- 角度调整为155度
- 绘制一个半径为100,圆心角为45度的圆弧
- 抬起画笔,朝向180度的方向(正左)移动40步
- 角度调整为155度
- 绘制一个半径为100,圆心角为45度的圆弧
✨绘制黑眼珠:
绘制黑眼珠的方法和绘制眼白的方法是类似的
1.画笔朝向0度方向,向前移动6步
2.设置画笔粗细为15,颜色为黑色
3.画一个半径为5的圆
4.向前移动110步,再绘制一个半径为5的圆
太棒啦!现在我们已经完成了滑稽emoji的绘制~
回顾绘制的过程:
1.将图形拆解为不同的区域
2.分区进行绘制
3.定义函数使区域更明晰
在绘制你需要的图形时也可以使用这样的方法哦~
三、完整代码:
# 导入turtle中的全部函数
from turtle import *
# 定义draw_face()函数绘制脸部
def draw_face():# 抬起画笔penup()# 移动到坐标点为(-120,0)的地方goto(-120,0)# 落笔pendown()# 将画笔颜色设置为黑色"black"pencolor("black")# 将画笔粗细设置为4pensize(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()函数设置画笔粗细为20pensize(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()函数绘制黑眼珠
def eyes_black():# 使用seth()函数将角度设置为0seth(0)# 使用forward()函数前进6步forward(6)# 使用pendown()函数落笔pendown()# 使用pensize()函数设置画笔粗细为15pensize(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()# 调用draw_face()函数画脸
draw_face()
# 调用draw_mouth()函数画嘴巴
draw_mouth()
# 调用eyes_white()函数画白眼珠
eyes_white()
# 调用eyes_black()函数画黑眼珠
eyes_black()
# 调用done()暂停
done()
四、函数函数总结:
学到现在或许你有一些疑问:这么多函数太容易记混了,有没有办法归类呢?
在这里我们可以把turtle中常用函数分成三类:
1.运动控制命令
2.画笔控制命令
3.全局控制命令
运动控制命令:
1.前进后退
2.转向
3.控制速度
4.移动到固定点位
5.画圆
等等…………
画笔控制命令:
1.改变画笔的大小和颜色
2.控制画笔的显示和隐藏
3.控制填充颜色
等等…………
全局控制命令:
全局控制命令是指可以应用在整个画布和绘画过程中的命令。
1.清空窗口
2.写文本
3.控制动画播放
相关文章:
《Python趣味工具》——自制emoji2(2)
今天,我们将会完成以下2个内容: 绘制静态emoji总结turtle中常用的绘图函数 文章目录 一、绘制静态emoji::sparkles: 画脸::sparkles:绘制嘴巴::sparkles:绘制眼白:绘制眼白-Part1:绘制眼白—pa…...
【面试刷题】——C++四种类型转化
C支持多种类型转换操作,其中包括四种主要类型转换方式: 隐式类型转换(Implicit Conversion): 隐式类型转换是自动发生的类型转换,由编译器自动完成。 它用于处理不同数据类型之间的运算,例如将…...
集成Activiti-Modeler流程设计器
集成Activiti-Modeler流程设计器 Activiti Modeler 是 Activiti 官方提供的一款在线流程设计的前端插件,可以方便流程设计与开发人员绘制流程图,保存流程模型,部署至流程定义等等。 1、材料准备 首先我们需要获取activiti-explorer.zip&…...
【深度学习】 Python 和 NumPy 系列教程(十一):NumPy详解:3、数组数学(元素、数组、矩阵级别的各种运算)
目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 1. 元素级别 a. 直接运算 b. 加法:np.add()函数 c. 减法:np.subtract()函数 d. 乘法…...
python难题切片处理
边距折叠 Html经常出现的一个外边距折叠,可能有人的不太理解,或者说不知道怎么解决、我们来着重来看下: 当两个div盒子模型连续出现的时候并且同时应用了一个margin外边距,会出现边距重叠的现象: .Div {width:150px; #定义公共的盒子样式 Height:150px; Margin:20p…...
《研发效能(DevOps)工程师(中级)认证》证书查询方式和路径丨IDCF
由国家工业和信息化部教育与考试中心颁发的职业技术证书,也是国内首个《研发效能(DevOps)工程师国家职业技术认证》,IDCF社区作为官方指定培训中心,邀请了多位业界知名专家讲师(部分专家讲师名单:王立杰、杜伟忠、陈老…...
NVR添加rtsp流模拟GB28181视频通道
一、海康、大华监控摄像头和硬盘录像机接入GB28181平台配置 1、海康设备接入配置 通过web登录NVR管理系统,进入网络,高级配置界面,填入GB28181相关参数。 将对应项按刚才获取的配置信息填入即可,下面的视频通道的编码ID可以保持…...
浅谈C++|文件篇
引子: 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化。C中对文件操作需要包含头文件< fstream > 。 C提供了丰富的文件操作功能,你可以使用标准库中的fstream库来进行文件的读取、写入和定位…...
C++ QT qml 学习之 做个登录界面
最近在学习QT,也初探到qml 做ui 的灵活性与强大,于是手痒痒,做个demo 记录下学习成果 主要内容是如何自己编写一个按钮以及qml多窗口。 参考WX桌面版,做一个登录界面,这里面按钮是写的一个组合控件,有 按…...
LLM 06-大模型架构
LLM 06-大模型架构 6.1 大模型之模型概括 语言模型的一开始就可以被看做是一个黑箱,当前大规模语言模型的能力在于给定一个基于自身需求的prompt就可以生成符合需求的结果。形式可以表达为: p r o m p t ⇝ c o m p l e t i o n prompt \leadsto compl…...
openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据
文章目录 openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据 openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。 SQL不…...
【k8s】kube-proxy 工作模式
文章目录 Userspace模式:iptables模式:负载均衡(Load Balancing) LB轮询(Round Robin):SessionAffinity:最少连接(Least Connection):IP哈希&…...
Linux:Centos9 《下载-安装》
下载 Download (centos.org)https://www.centos.org/download/ 安装 选择第一个安装centos 根据自己需要的语言环境选择即可 这里选择要安装的磁盘,然后点击完成 这里选择第一个就行带有图形化 然后我们去对这两个进行设置就行 这两个地方自己进行设置就行 耐心等…...
数字化管理平台建设实践
在勘察设计行业,各企业加速推进数字化转型。通过管理要素数字化,不断优化内部组织运营效率;通过生产手段数字化、技术产品数字化,提升服务质量,改善客户体验;通过数字化营销,精准对接市场需求&a…...
Linux命令(80)之sort
linux命令之sort 1.sort介绍 linux命令sort用于将文本文件内容以行为单位加以排序;sort命令默认按每行的第一个字符排序,根据首字母的ASCII码值进行升序(从小到大排列)。 sort的默认分隔符是空白(空格和tab),多少空白都算一个分隔符。 2.…...
[k8s] kubectl port-forward 和kubectl expose的区别
kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…...
vscode如何设置文件折叠
随着项目的不断迭代开发,复杂度越来越高,配置文件越来越多,导致vscode左侧文件列表展示非常不直观,幸好可以通过文件折叠来简化展示效果,把同类相关的文件折叠在一块展示,方便查看配置文件。配置好后的效果…...
Linux centos7 bash编程训练
训练编写一段代码,打印输出100之内的明7暗7,同时要求每5个数字打印在一行。 此项训练主要是考察for循环的使用,及条件判断表达式的设置和不同写法的应用。 常用的for循环有四种写法(如打印1-100的整数): …...
k8s集群换ip
1.把/etc/kubernetes/*.conf中所有的旧ip换成新ip cd /etc/kubernetes/ find . -type f | xargs sed -i "s/$oldip/$newip/"2.替换$HOME/.kube/config文件中的旧ip为新ip(注意sudo的话需要改root下的) cd $HOME/.kube/ find . -type f | xargs sed -i "s/$old…...
选择HAL库还是标准库
选择HAL库还是标准库呢?HAL库是趋势,标准库不再升级了,转HAL库是大势所趋。HAL库有优点,也有自身的不足,建议初学者还是从标准库入手。 标准库是单片机开发的基本库,它把“用寄存器实现的功能”写成一个函…...
计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别
文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…...
Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向
Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向 1. 效果图2. 源码2.1 line.html2.2line_arrow.html 参考 今天要排查个问题,需要显示多个经纬度点连接成线段的方向,于是尝试下展示。 1. mapbox渲染经…...
kubernetes部署(kubeadmin)
文章目录 1.环境准备2. 安装dokcer3.部署cri-docker4.各个节点安装kubeadm等5.整合kubelet和cri-dockerd配置cri-dockerd配置kubelet 6.初始化集群 1.环境准备 环境和软件版本 OS : ubuntu 20.04 container runtime: docker CE 20.10.22 kubernetes 1.24.17 CRI:cr…...
Leetcode168. Excel表列名称
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题解: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码如下: class Solution {public String convertToTitle(int columnNumber) {StringBuild…...
碎片笔记 | 大模型攻防简报
前言:与传统的AI攻防(后门攻击、对抗样本、投毒攻击等)不同,如今的大模型攻防涉及以下多个方面的内容: 目录 一、大模型的可信问题1.1 虚假内容生成1.2 隐私泄露 二、大模型的安全问题2.1 模型窃取攻击2.2 数据窃取攻击…...
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
目录 1 基本子图绘制示例 2 子图网格布局 3 调整子图的尺寸 4 多行多列的子图布局 5 子图之间的共享轴 6 绘制多个子图类型 7 实战: 绘制一个大图,里面包含6个不同类别的子图,不均匀布局。 绘制子图(subplots)…...
【Android常见问题(六)】- UX标注色值带有百分比的使用方法
这里写自定义目录标题 透明度和不透明度的转换对应色值百分比透明度标注 透明度和不透明度的转换 需要不透明度值的,可以自己算:透明度值 不透明度值 100% 如果UI给的视觉稿标注是:颜色#FFFFFF,透明度40% 。那你的计算方式应该…...
Prometheus+Grafana可视化监控【ElasticSearch状态】
文章目录 一、安装Docker二、安装ElasticSearch(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装elasticsearch_exporter七、Grafana添加ElasticSearch监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docke…...
Java手写堆排序(Heap Sort)和案例
Java手写堆排序(Heap Sort) 1. 思维导图 下面是使用Mermaid代码绘制的思维导图,用于解释堆排序算法的实现思路原理: #mermaid-svg-cFIgsLSm5LOBm5Gl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…...
Linux设备驱动模型之字符设备
Linux设备驱动模型之字符设备 前面我们有介绍到Linux的设备树,这一节我们来介绍一下字符设备驱动。字符设备是在IO传输过程中以字符为单位进行传输的设备,而字符设备驱动则是一段可以驱动字符设备驱动的代码,当前Linux中,字符设备…...
土特产网站平台建设/门户网站软文
西雅图IT圈:seattleit【今日作者】PowerBall选号机身体和灵魂总有一个要走在买PowerBall的路上“你说说这些年轻人,上个班也不好好坐着,搞个standing desk站着,怎么不躺着呢?”当然是因为办公室里没地方躺啦——▼但是…...
jsp网站开发四 酷 全书源码/seo技术交流论坛
1、穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 解决办法: 持久层查询不到就缓存空结果,查询时先判断缓存中是否exists(key) ,如果有直接返回空,没有则查…...
沽源网站建设案例/西安seo服务
作者按:7月28日周日下午,在TDengine物联网大数据平台开源两周后,涛思数据联合CSDN举办了「TDengine 和他的小伙伴们」Beijing Meetup活动。活动后,我应CSDN邀约,撰写此文,讲述了我开发TDengine的新路历程&a…...
elegant wordpress/网站的推广方式有哪些
“转正”、“转型”、“转强” 这是属于中国经济的关键词! 在今年的困境之下,中国经济展现出了强大的韧性,从复产复工,到全面转正,再到世界经济的引擎,一张漂亮的成绩单赢得全球关注。国际货币基金组织&…...
网站建设外包兼职/百度总部地址
阅读本文大概需要5分钟。经常有读者问:做程序员太累要不要考个公务员或者找一份国企工作、刚毕业是选择考公还是去互联网公司?这些问题不同人有不同的答案,很多时候没法回答,只好回一句:要不先考上公务员或者拿了国企O…...
网站官网认证怎么做的/竞价托管哪家便宜
Google发布了稳定版本的Android Studio 3.0和开发人员预览版本的Android Oreo 8.1。\\Google在其I/O 2017会议上,首次宣布Android Studio 3.0,但当时是金丝雀发布,现在是正式发布(generally available)版本。从它的新特…...