当前位置: 首页 > news >正文

《Python趣味工具》——自制emoji2(2)

今天,我们将会完成以下2个内容:

  1. 绘制静态emoji
  2. 总结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:

在这里插入图片描述

绘制第二部分的眼白也是类似的:

  1. 抬起画笔,朝向180度的方向(正左)移动40步
  2. 角度调整为155度
  3. 绘制一个半径为100,圆心角为45度的圆弧
  4. 抬起画笔,朝向180度的方向(正左)移动40步
  5. 角度调整为155度
  6. 绘制一个半径为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. 乘法&#xf…...

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++|文件篇

引子&#xff1a; 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放通过文件可以将数据持久化。C中对文件操作需要包含头文件< fstream > 。 C提供了丰富的文件操作功能&#xff0c;你可以使用标准库中的fstream库来进行文件的读取、写入和定位…...

C++ QT qml 学习之 做个登录界面

最近在学习QT&#xff0c;也初探到qml 做ui 的灵活性与强大&#xff0c;于是手痒痒&#xff0c;做个demo 记录下学习成果 主要内容是如何自己编写一个按钮以及qml多窗口。 参考WX桌面版&#xff0c;做一个登录界面&#xff0c;这里面按钮是写的一个组合控件&#xff0c;有 按…...

LLM 06-大模型架构

LLM 06-大模型架构 6.1 大模型之模型概括 语言模型的一开始就可以被看做是一个黑箱&#xff0c;当前大规模语言模型的能力在于给定一个基于自身需求的prompt就可以生成符合需求的结果。形式可以表达为&#xff1a; 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 数据库管理-创建和管理普通表-删除表中数据 在使用表的过程中&#xff0c;可能会需要删除已过期的数据&#xff0c;删除数据必须从表中整行的删除。 SQL不…...

【k8s】kube-proxy 工作模式

文章目录 Userspace模式&#xff1a;iptables模式&#xff1a;负载均衡&#xff08;Load Balancing&#xff09; LB轮询&#xff08;Round Robin&#xff09;&#xff1a;SessionAffinity&#xff1a;最少连接&#xff08;Least Connection&#xff09;&#xff1a;IP哈希&…...

Linux:Centos9 《下载-安装》

下载 Download (centos.org)https://www.centos.org/download/ 安装 选择第一个安装centos 根据自己需要的语言环境选择即可 这里选择要安装的磁盘&#xff0c;然后点击完成 这里选择第一个就行带有图形化 然后我们去对这两个进行设置就行 这两个地方自己进行设置就行 耐心等…...

数字化管理平台建设实践

在勘察设计行业&#xff0c;各企业加速推进数字化转型。通过管理要素数字化&#xff0c;不断优化内部组织运营效率&#xff1b;通过生产手段数字化、技术产品数字化&#xff0c;提升服务质量&#xff0c;改善客户体验&#xff1b;通过数字化营销&#xff0c;精准对接市场需求&a…...

Linux命令(80)之sort

linux命令之sort 1.sort介绍 linux命令sort用于将文本文件内容以行为单位加以排序&#xff1b;sort命令默认按每行的第一个字符排序&#xff0c;根据首字母的ASCII码值进行升序(从小到大排列)。 sort的默认分隔符是空白(空格和tab)&#xff0c;多少空白都算一个分隔符。 2.…...

[k8s] kubectl port-forward 和kubectl expose的区别

kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…...

vscode如何设置文件折叠

随着项目的不断迭代开发&#xff0c;复杂度越来越高&#xff0c;配置文件越来越多&#xff0c;导致vscode左侧文件列表展示非常不直观&#xff0c;幸好可以通过文件折叠来简化展示效果&#xff0c;把同类相关的文件折叠在一块展示&#xff0c;方便查看配置文件。配置好后的效果…...

Linux centos7 bash编程训练

训练编写一段代码&#xff0c;打印输出100之内的明7暗7&#xff0c;同时要求每5个数字打印在一行。 此项训练主要是考察for循环的使用&#xff0c;及条件判断表达式的设置和不同写法的应用。 常用的for循环有四种写法&#xff08;如打印1-100的整数&#xff09;&#xff1a; …...

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库还是标准库呢&#xff1f;HAL库是趋势&#xff0c;标准库不再升级了&#xff0c;转HAL库是大势所趋。HAL库有优点&#xff0c;也有自身的不足&#xff0c;建议初学者还是从标准库入手。 标准库是单片机开发的基本库&#xff0c;它把“用寄存器实现的功能”写成一个函…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...