《Python趣味工具》——自制emoji(1)绘制爱心应援牌❤️

news2025/1/16 1:41:09

项目目标:
本项目旨在学习如何自制emoji,学习内容主要分为3个方面,分3次来讲,根本在于了解了turtle的使用!
1.完成一个爱心应援牌
2.完成静态的emoji
3.让emoji动起来!

今天我们来学习第一个部分。


在这里插入图片描述


文章目录

  • 一、效果展示:
    • 导入turtle模块:
  • 二、步骤拆解:
    • 1. 绘制左边线:
      • pensize()
      • pencolor()
      • left()
      • forward()
    • 2. 绘制左半圆:
      • right()
      • circle()
    • 3. 绘制右半圆:
    • 4. 绘制右边线:
    • 5. 填充颜色:
      • fillcolor()
      • begin_fill ()
      • end_fill()
    • 6. 填充表白文字
      • goto()
      • write()
      • penup()
      • hideturtle()
  • 三、彩蛋——circle函数详解
  • 三、拓展训练:
    • 绘制一个四叶草
    • 绘制五角星
    • 绘制奥运五环

一、效果展示:

turtle,中文名小海龟,是一种Logo编程语言。

可以用它来实现绘图,制作简单游戏等功能。

导入turtle模块:

可以用两种方式来导入turtle。

1️⃣方法1:
import turtle:直接导入turtle模块。

在使用过程中,如果需要使用turtle模块中的函数,方法是:

turtle.pensize(),turtle.pencolor()


2️⃣方法2:
from turtle import *:从turtle模块中导入所有的函数

这样就可以直接使用turtle模块中的函数,例如:

pensize(),pencolor()


好了,废话不多说,直接上代码:

下面这部分代码是利用turtle()的各种函数绘制了一个心形应援牌。

# 从turtle中导入所有函数
from turtle import *

# 绘制心形
# 使用pensize()函数将画笔粗细设置为5
pensize(5)

# 使用pencolor()函数设置颜色
# 画笔颜色为"red"
pencolor("red")

# 使用fillcolor()函数设置填充颜色
# 填充颜色为"pink"
fillcolor("pink")

# 使用begin_fill()函数准备开始填充图形
begin_fill()

# 使用left()函数向左转135度
left(135)

# 使用forward()函数向前进100步
forward(100)

# 使用right()函数右转180度
right(180)

# 使用circle()函数画半圆,半径为50,角度-180度
circle(50,-180)

# 使用left()函数向左转90度
left(90)

# 使用circle()函数画半圆,半径为50,角度-180度
circle(50,-180)

# 使用right()函数右转180度
right(180)

# 使用forward()函数向前进100步
forward(100)

# 使用end_fill()函数填充完成
end_fill()

# 填充文字
# 使用penup()函数抬起画笔
penup()

# 使用pencolor()函数设置画笔颜色为黑色
pencolor("black")

# 使用goto()函数将画笔移动到坐标(0,80)的位置
goto(0,80)

# 使用hideturtle()函数隐藏画笔
hideturtle()

# 设定write()函数输入内容为"LOVE YOU",居中对齐,字体为"Arial"和大小为20粗细为"bold"
write("LOVE YOU",align = "center",font=("Arial",20,"bold"))

# 防止程序一闪而过,导致无法看清所画
done()

绘制效果如下:
在这里插入图片描述


二、步骤拆解:

我们将绘制爱心应援牌的步骤分解为几个部分。

  1. 绘制左边线
  2. 绘制左半圆
  3. 绘制右半圆
  4. 绘制右边线
  5. 填充颜色
  6. 填充表白文字
    在这里插入图片描述

1. 绘制左边线:

接下来我们完成左边线的绘制。

pensize()

一个函数,作用是设置画笔粗细

设置的参数表示画笔的粗细程度。

例如:pensize(5)表示将画笔粗度设置为5


pencolor()

一个函数,作用是设置画笔颜色

例如:pencolor(“red”),画笔颜色为红色。

颜色设置
pencolor()的颜色设置很灵活,参数可以用三种模式填写,比如:

RGB颜色值:(255,192,203)
16进制颜色码:#FFC0CB
英文代码:“pink”

它们呈现的结果都是粉色,其他色彩设置可以参考网站: 颜色设置参考网站


left()

一个函数,作用是将画笔方向向左转

设置的参数表示小海龟(画笔)向左转的角度。

例如:left(135)表示向左转135度。
在这里插入图片描述
相信细心的你已经发现了,小海龟的初始朝向是水平向右的!


forward()

一个函数,作用是向画笔方向前进

设置的参数表示前进的步数。

例如:forward(100)表示向海龟头的方向前进100步
在这里插入图片描述


2. 绘制左半圆:

接下来我们完成左半圆的绘制。

right()

一个函数,作用是将画笔方向向右转

设置的参数表示向右转的角度。

例如:right(180)表示向右转180度。
在这里插入图片描述
注意:小海龟的转动是以当前头的朝向为参考点的,即可认为头的朝向永远是0度(尽管在坐标系中实际不是这样的)。


circle()

一个函数,作用是画圆

circle(radius,extent=None,steps=None)

例如:circle(50,-180)表示绘制一个半径为50,圆心角为-180的半圆。
在这里插入图片描述


3. 绘制右半圆:

接下来我们完成右半圆的绘制。

绘制右半圆
我们可以用同样的方法来绘制右半圆。

此时我们需要将乌龟的头向左旋转90度,半径设置为50,顺时针画半圆(180度)。
在这里插入图片描述
其实这些角度都是可以自己计算出来的,自己想要绘制什么样的图形,那么你就要去设计相应的参数是什么!


4. 绘制右边线:

和绘制左边线一样,接下来我们完成右边线的绘制。


5. 填充颜色:

fillcolor()

fillcolor()可以设置填充颜色
例如:fillcolor(“pink”)是指将填充颜色设置为粉色。


begin_fill ()

设置颜色填充的起点


end_fill()

设置颜色填充的终点


6. 填充表白文字

接下来我们完成最后一个步骤:填充表白文字。

填写文字的步骤是:

1.设置画笔颜色
2.将画笔移动到爱心的中心位置
3.写下表白的话
在这里插入图片描述

goto()

一个函数,作用是移动到指定坐标位置

goto(x,y)参数需要填写移动到的具体坐标位置。

例如goto(0,80)就是移动到x=0,y=80的位置


write()

一个函数,作用是填写文字

write()函数有4个参数,只有参数1是必选的,其他的参数你可以根据自己的需求设置。

write(arg,move,align,font)

在这里插入图片描述
例如:write(“LOVE YOU”,align = “center”,font=(“Arial”,20,“bold”))

表示:书写的内容是"LOVE YOU “,文字内容居中,字体为"Arial”,字体大小20,粗细为"bold"粗。


抬起和隐藏画笔

指示牌完成后发现画笔一直连到了文字的位置,并且画笔的光标一直闪烁。

我们希望移动画笔时,画笔可以抬起,书写完文字后画笔能够隐藏起来。

在这里插入图片描述


penup()

一个函数,作用是抬起画笔


hideturtle()

一个函数,作用是隐藏海龟画笔


三、彩蛋——circle函数详解

turtle中最为复杂的就是circle函数啦,不过画圆,画弧形都离不开它,你可以参考介绍,多多运用。

circle(radius,extent=None,steps=None)

1️⃣参数1:radius表示半径。
当radius值为正数时,圆心在当前位置左侧。
当radius值为负数时,圆心在当前位置右侧。
在这里插入图片描述


2️⃣参数2:extent设置弧形角度(可省略)。
当extent值为正数时,顺小海龟当前方向绘制。
当extent值为负数时,逆小海龟当前方向绘制。

在这里插入图片描述


3️⃣参数3:steps表示起点到终点由几条线组成。(可省略)


三、拓展训练:

绘制一个四叶草

使用 turtle 库的 right() 函数和 circle() 函数绘制一个四叶草,效果如下图所示:
在这里插入图片描述
你需要完成:
1.从初始位置 (0,0) 开始绘制,并设置画笔粗细为5
2.绘制四叶草,注意:每片叶子为半径50,圆心角180的圆

# 利用from.....import....导入turtle模块所有函数
from turtle import *

# 从初始位置(0,0)开始绘制,并设置画笔粗细为5
goto(0,0)

pensize(5)

# 创建循环绘制四叶草
for i in range(4):

    # 画笔方向右转90度 
    right(90)
    
    # 画一个半径为50,圆心角为180度的圆
    circle(50,180)

绘制五角星

闪闪红星照我心
2021年是中国共产党建党一百周年,正是因为有了革命先烈的英勇无畏,才有了祖国今天的繁荣昌盛

闪闪红星照耀在每个人心中,快来尝试一下用刚学到的知识来绘制一颗闪闪的红星吧!

你需要做到:
1.设置画笔粗细为5,画笔颜色为yellow,填充颜色为red
2.从初始位置(-90,0)开始绘制
3.创建for循环,在每次循环中:前进200距离,然后向右旋转144度

绘制完成后的效果图如下:
在这里插入图片描述

# 利用from.....import....导入turtle模块所有函数
from turtle import *

# 设置画笔粗细为5,画笔颜色为yellow,填充颜色为red,初始位置为(-90,0)
pensize(5)

pencolor("yellow")

fillcolor("red")

goto(-90,0)

# 开始填充
begin_fill()

# 创建for循环,开始绘制闪闪红星
for num in range(4):

    # 前进200距离
    forward(200)
    
    # 画笔向右旋转144度
    right(144)  
    
# 完成填充
end_fill()

绘制奥运五环

东京奥运会的余温刚刚散去,大家是否还记得代表奥林匹克的奥运五环呢?

奥运五环代表着世界五大洲之团结,学完turtle之后的你试着把它画出来吧

你需要完成的是:
1.定义一个绘制圆环的函数getCircle( ),参数为圆的颜色color

2.getCircle( )函数实现的功能是绘制一个画笔粗细为5,半径为50的圆

3.绘制圆环,在坐标点位为(-80,0) (0,0) (80,0) (-40,-80) (40,-80)的位置分别使用getCircle( )函数

4.上述位置绘制圆的颜色依次为blue,black,red,yellow,green

绘制完成后的效果图如下:
在这里插入图片描述

# 利用from.....import....导入turtle模块所有函数
from turtle import *

# 定义一个绘制圆环的函数getCircle(),参数为color,设置画笔颜色为参数color,画笔粗细为5,圆半径为50
def getCircle(color):
    # 落下画笔
    pendown()
    
    pensize(5)
    
    pencolor(color)
    
    circle(50,360)   
    
    # 抬起画笔
    penup()

# 隐藏画笔
hideturtle()
# 抬起画笔
penup()

# 在(-80,0)(0,0)(80,0)(-40,-80)(40,-80)绘制五环
goto(-80,0)
getCircle("blue")

goto(0,0)
getCircle("black")

goto(80,0)
getCircle("red")

goto(-40,-80)
getCircle("yellow")

goto(40,-80)
getCircle("green")



好了,今天的讲解就到这里了,我们下期再见!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一个图像生成开源项目——Fooocus

目录 什么是Fooocus? 项目地址 性能消耗 如何安装 效果对比 总结 什么是Fooocus? Fooocus是一款图像生成软件,但它不同寻常,是对稳定扩散(Stable Diffusion)和Midjourney的设计理念的巧妙重新思考。本…

C语言经典100例题(42)--学习使用auto定义变量的用法

目录 题目 问题分析 代码 运行结果 题目 学习使用auto定义变量的用法 问题分析 auto存储类型只对属于块的变量有效。auto变量具有自动存储期限、块作用域,并且无连接。auto存储类型几乎从来不用明确地指明,因为对于在块内部声明的变量,…

超经典 Linux 运维巡检脚本及示例

inux 系统日常巡检脚本,巡检内容包含了:磁盘、内存、CPU、进程、文件更改、用户登录等一系列的操作,直接用就行了。 报告以邮件发送到邮箱,在 log 下生成巡检报告。 一、巡检脚本 #!/bin/bash # Author: HanWei # Date: 2020-…

Nginx__高级进阶篇之LNMP动态网站环境部署

动态网站和LNMP(LinuxNginxMySQLPHP)都是用于建立和运行 web 应用程序的技术。 动态网站是通过服务器端脚本语言(如 PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不…

Sentinel-限流降级

0.目录 初识Sentinel 流量控制 隔离和降级 授权规则 规则持久化 1.初识Sentinel 1.0目录 雪崩问题及解决方案 服务保护技术对比 Sentinel介绍和安装 微服务整合Sentinel 1.1 雪崩问题 1.1.1 引起雪崩的原本 如果服务D出现了问题,那么当服务A调用服务D时&…

Jetpack Compose 1.5 发布:全新 Modifier 系统带来性能大幅提升

不久前 Compose 1.5.0 稳定版发布,在组合的性能方面得到明显改善,这主要归功于对 Modifier API 的持续重构。 Modifier 是 Compose 中的重要概念,为 Composition 中的 LayoutNode 配置各种样式信息以用于后续渲染。在 1.3.0 之前的 Modifier …

【教师节特辑】做个教师节快乐照片墙吧

写作原因: 教师节到了,身边或多或少都有很多不少的老师,基本以前认识的老师都不记得了,以后总也会认识一些日本老师的。程序员,就应该以自己的方式来庆祝教师节。想了下,要不还是做个照片墙把。 项目链接 …

2024年java面试--mysql(2)

系列文章目录 2024年java面试(一)–spring篇2024年java面试(二)–spring篇2024年java面试(三)–spring篇2024年java面试(四)–spring篇2024年java面试–集合篇2024年java面试–redi…

电商API与电商数据经济的产生【电商平台-淘宝/京东/拼多多下的API数据经济】

计算机连接了互联网后,释放出了巨大的创新力和价值,同样地,智能合约一旦连接到快速增长的链下数据和API经济,也将变得无比强大。如果智能合约可以连接至链下数据提供商、web API、企业系统、云服务商、物联网设备、支付系统以及其…

高分三号1米分辨率飞机检测识别数据集

二、背景介绍 合成孔径雷达(Synthetic Aperture Radar, SAR) 是一种主动式的微波成像系统,它不受光照、云雾 和气候等自然条件影响,具备全天时、全天候对地 观测的能力,已成为遥感领域重要的信息获取平 台。近年来,随着遥感成像技…

Redis主从复制集群的介绍及搭建

在现代的软件开发中,数据的可靠性和可用性是至关重要的。Redis,作为一个开源的、内存中的数据结构存储系统,以其出色的性能和灵活的数据结构,赢得了开发者们的广泛喜爱。而 Redis 的主从复制功能,更是为我们提供了一种…

基于AHP模型指标权重分析python整理

一 背景介绍 日常会有很多定量分析的场景,然而也会有一些定性分析的场景针对定性分析的场景,预测者只能通过主观判断分析能力来推断事物的性质和发展趋势然而针对个人的直觉和虽然能够有一定的协助判断效果,但是很难量化到指标做后期的复用 …

Mybatis学习笔记2 增删改查及核心配置文件详解

Mybatis学习笔记1 Mybatis入门_biubiubiu0706的博客-CSDN博客 将Mybatis进行封装 SqlSessionUtil工具类 package com.example.util;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFacto…

modinfo对比内核版本号

加载内核&#xff0c;出现版本不一样 cat /proc/verison查看内核板本 模块版本&#xff1a;显示模块的版本号。 $ modinfo [OPTIONS] [MODULE] 参数说明-F, --field <field>: 指定要显示的字段&#xff0c;可以使用逗号分隔多个字段。-k, --kernel <kernel>: 指定…

第15章_瑞萨MCU零基础入门系列教程之Common I2C总线模块

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

香橙派使用外设驱动库wiringOP来驱动蜂鸣器

硬件接线 回顾香橙派的物理引脚对应&#xff1a; 所以将VCC接到1&#xff0c;GND接到6&#xff0c;I/O口接到7&#xff1a; 代码编写 香橙派的wiringOP库提供了很多的例程&#xff0c;可以将blink.c拷贝进自己的代码文件夹来修改&#xff1a; 小插曲---将手动对齐的Tab和自动对…

《向量数据库指南》——向量数据库和关系型数据库的区别?

向量数据库和关系型数据库是两种不同类型的数据库系统,它们在数据模型、数据存储、查询操作等方面存在许多区别。以下是向量数据库和关系型数据库的主要区别: 1、数据模型: 向量数据库:向量数据库专门设计用于存储和查询向量数据,这些数据通常表示为数值向量或嵌入向量。向…

精品基于NET实现的教育资源配置管理系统

《[含文档PPT源码等]精品基于NET实现的教育资源配置管理系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发软件&#xff1a;VS 2017 &#xff08;版本2017以上即可&#xff0c;不能低于2017&#xff09…

50个渗透(黑客)常用名词及解释

目录 前言 一.渗透测试 二.网络安全 三.安全攻击 四.黑客工具 五.渗透方法 六.网络钓鱼 七.攻击技术 八.其他名词 总结 前言 网络安全是当今互联网时代不可忽视的重要议题。随着科技的发展&#xff0c;黑客渗透技术也日益复杂和潜在危险。为了加强对网络安全的认识&…

【无标题】C/C++内存管理

目录 一. C/C内存分布 二. C语言中动态内存管理方式 1.malloc/calloc/realloc和free 三. C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 四.malloc/free和new/delete的区别 五.内存泄漏 1.什么是内存泄漏&#xff0c;内存泄漏的危害 一. C…