Python爱心光波

爱心光波

文章目录

  • 前言
    • Turtle入门
      • 简单案例
      • 入门函数
    • 爱心光波
      • 程序设计
      • 程序分析
  • 尾声

前言

七夕要来啦,博主在闲暇之余创作了一个爱心光波,感兴趣的小伙伴们快来看看吧!

Turtle入门

Turtle 是一个简单而直观的绘图工具,它可以帮助你通过简单的命令来创建各种图形。Turtle 最初是一个基于Logo语言的图形库,在Python中,它被作为标准库的一部分提供。

简单案例

下面是一个基本的 Turtle 绘图入门示例:

import turtle
  • 创建一个画布窗口
window = turtle.Screen()
  • 创建一个画笔(turtle对象)
pen = turtle.Turtle()
  • 绘制一个正方形
for _ in range(4):pen.forward(100)pen.right(90)
  • 结束绘图并关闭画布窗口
turtle.done()

在上述示例中,我们首先导入了 turtle 模块,并创建了一个画布窗口对象。然后,我们创建了一个画笔对象,可以使用它来绘制我们想要的图形。
在创建了画笔之后,我们使用循环来绘制一个正方形,通过 pen.forward() 命令向前移动指定的距离(这里是100),通过 pen.right() 命令向右转指定的角度(这里是90度)来改变画笔的方向。
最后,我们调用 turtle.done() 来结束绘图,并关闭画布窗口。
这只是 Turtle 绘图的一个简单入门示例,你可以通过调用不同的命令和方法来绘制各种不同形状的图像,例如线条、圆、多边形等。Turtle 还提供了一些其他方法来控制画笔的颜色、粗细、填充等属性。

入门函数

当你正在使用Turtle绘图时,有一些基本函数可以帮助你移动画笔并绘制各种形状。下面是一些基本的Turtle函数的简介:

  • forward(distance) :向前移动画笔,指定移动的距离(单位为像素)。
  • backward(distance) :向后移动画笔,指定移动的距离(单位为像素)。
  • right(angle) :向右旋转画笔,指定旋转的角度(单位为度)。
  • left(angle) :向左旋转画笔,指定旋转的角度(单位为度)。
  • penup() :抬起画笔,移动时不绘制线条。
  • pendown() :放下画笔,移动时绘制线条。
  • goto(x, y) :将画笔移动到指定的坐标位置(x,y)。
  • setx(x) :将画笔的x坐标设置为指定值。
  • sety(y) :将画笔的y坐标设置为指定值。
  • setheading(angle) :设置画笔的朝向,指定旋转的角度(单位为度)。
  • circle(radius) :绘制一个圆,指定半径。
  • dot(size, color) :绘制一个点,指定大小和颜色。

这些仅仅是Turtle模块中可用的一些基本函数,还有其他更多的函数可以用于绘制各种多边形、填充图形、控制画笔颜色、粗细等。你可以查阅Python官方文档中的Turtle模块部分或其他Turtle相关的教程和示例代码,了解更多关于Turtle绘图的详细功能和用法。

爱心光波

程序设计

import turtle as tu
import random as ratu.setup(1.0, 1.0)  # 设置画板大小(小数表示比例,整数表示大小)
tu.screensize(1.0, 1.0)  # 设置屏幕大小
tu.bgcolor('black')  # 设置画布背景颜色
t = tu.Pen()  # 设置画笔
t.ht()  # 隐藏画笔
colors = ['pink', 'hotpink', 'deeppink', 'lightpink']  # 爱心的颜色列表,可以设置自己喜欢的颜色噢
# colors = ['skyblue', 'lightblue', 'blue', 'royalblue'] # 蓝色系
class Star():  # 星星类def __init__(self, r):  # 初始化self.r = r  # 爱心的半径self.x = 0 # 爱心的横坐标self.y = 120  # 爱心的纵坐标self.color = ra.choice(colors)  # 爱心的颜色self.outline = 2 # 爱心的外框大小(可不要)def draw(self):  # 画爱心函数,就是用turtle画爱心t.pensize(self.outline)t.penup()t.color(self.color)t.goto(self.x, self.y)t.pendown()# t.begin_fill()# t.fillcolor('pink')t.setheading(120)t.circle(self.r, 195)t.fd(self.r * 2.4)t.lt(90)t.fd(self.r * 2.4)t.circle(self.r, 195)# t.end_fill()def change(self):  # 改变爱心的大小(爱心不断增大)if self.r <= 100:self.r += 1else:self.r = 1self.x = 0self.y = 120self.c = ra.choice(colors)
Stars = []  # 星星列表
for i in range(200):  # 循环增加星星Stars.append(Star(i-1))
while True:  # 开始画星星tu.tracer(0)t.clear()for i in range(99):Stars[i].draw()Stars[i].change()tu.update()
tu.mainloop()

程序分析

这段代码使用了Python的turtle模块来实现画爱心星星的效果。下面是代码的详细分析:

  • import turtle as tu:导入turtle模块并将其别名为tu。

  • tu.setup(1.0, 1.0):设置画板的大小为1.0倍的屏幕大小。

  • tu.screensize(1.0, 1.0):设置屏幕大小为1.0倍的屏幕大小。

  • tu.bgcolor(‘black’):设置画布的背景颜色为黑色。

  • t = tu.Pen():创建一个画笔对象。

  • t.ht():隐藏画笔。

  • colors = [‘pink’, ‘hotpink’, ‘deeppink’, ‘lightpink’]:定义了爱心的颜色列表。

  • class Star()::定义了一个名为Star的类,用于绘制爱心。

  • def init(self, r)::类的初始化方法,r为爱心的半径。

  • self.r = r:将传入的半径值赋给对象的半径属性self.r。

  • self.x = 0:设置爱心的横坐标。

  • self.y = 120:设置爱心的纵坐标。

  • self.color = ra.choice(colors):随机选择一个颜色赋给爱心的颜色属性。

  • self.outline = 2:设置爱心的外框大小。

  • def draw(self)::定义了一个画爱心的方法。

  • t.pensize(self.outline):设置画笔的大小为爱心的外框大小。

  • t.penup():抬起画笔。

  • t.color(self.color):设置画笔的颜色为爱心的颜色。

  • t.goto(self.x, self.y):将画笔移动到爱心的起始位置。

  • t.pendown():放下画笔。

  • t.setheading(120):设置画笔的方向为120度。

  • t.circle(self.r, 195):绘制一个半径为self.r的弧形。

  • t.fd(self.r * 2.4):向前移动self.r * 2.4的距离。

  • t.lt(90):向左转90度。

  • t.fd(self.r * 2.4):向前移动self.r * 2.4的距离。

  • t.circle(self.r, 195):绘制一个半径为self.r的弧形。

  • def change(self)::定义了改变爱心大小的方法。

  • if self.r <= 100::如果爱心的半径小于等于100。

  • self.r += 1:爱心的半径加1。

  • else::如果爱心的半径大于100。

  • self.r = 1:将爱心的半径设置为1。

  • self.x = 0:将爱心的横坐标设置为0。

  • self.y = 120:将爱心的纵坐标设置为120。

  • self.c = ra.choice(colors):随机选择一个颜色赋给爱心的颜色属性。

当运行这段代码时,首先会导入turtle模块并将其别名为tu。然后通过调用tu.setup()和tu.screensize()函数设置画板和屏幕的大小。接下来,通过调用t = tu.Pen()创建一个画笔对象并隐藏画笔。然后定义了一个包含四个颜色值的列表colors,用于随机选择爱心的颜色。

接着定义了名为Star的类,用于绘制爱心。类的初始化方法__init__接受一个参数r,表示爱心的半径。在初始化方法中,将传入的半径值赋给对象的半径属性self.r,并设置爱心的初始坐标、颜色和外框大小。类中还定义了一个名为draw的方法,用于绘制爱心。在该方法中,根据对象的属性设置画笔的大小、颜色,并通过一系列的t.goto(), t.setheading(), t.circle()和t.fd()函数绘制了一个具有指定半径、颜色的爱心。

接下来,在主程序中创建了一个空的星星列表Stars。通过一个for循环,循环200次,每次创建一个爱心对象并将其加入星星列表。接着进入一个无限循环,开始绘制动画效果。

在循环开始处,通过调用tu.tracer(0)关闭了动画效果,以便实时显示绘制过程。然后调用t.clear()函数清空画布,准备重新绘制。接下来,通过遍历星星列表中的爱心对象,依次调用对象的draw方法来绘制每个爱心。

这段代码的执行结果是在一个黑色背景的画布上循环绘制不同颜色和大小的爱心。循环过程中,爱心的大小会逐渐增加,颜色也会随机变化。

尾声

祝大家七夕快乐!

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

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

相关文章

面试笔记:Android 架构岗,一次4小时4面的体验

作者&#xff1a;橘子树 此次面试一共4面4小时&#xff0c;中间只有几分钟间隔。对持续的面试状态考验还是蛮大的。 关于面试的心态&#xff0c;保持悲观的乐观主义心态比较好。面前做面试准备时保持悲观&#xff0c;尽可能的做足准备。面后积极做复盘&#xff0c;乐观的接受最…

基于MIV的神经网络变量筛选

1.案例背景 一般神经网络中所包含的网络输人数据是研究者根据专业知识和经验预先选择好的,然而在许多实际应用中,由于没有清晰的理论依据,神经网络所包含的自变量即网络输入特征难以预先确定,如果将一些不重要的自变量也引入神经网络,会降低模型的精度,因此选择有意义的自变量特…

ECS服务器安装docker

​ 为了安装并配置 Docker &#xff0c;你的系统必须满足下列最低要求&#xff1a; 64 位 Linux 或 Windows 系统 如果使用 Linux &#xff0c;内核版本必须不低于 3.10 能够使用 sudo 权限的用户 在你系统 BIOS 上启用了 VT&#xff08;虚拟化技术&#xff09;支持 on your s…

大数据课程I4——Kafka的零拷贝技术

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的零拷贝技术&#xff1b; ⚪ 了解常规的文件传输过程&#xff1b; 一、常规的网络传输原理 表面上一个很简单的网络文件输出的过程&#xff0c;在OS底层&…

一百五十七、Kettle——Kettle最新的官网下载地址(之前的Kettle官网已经无法下载,真坑)

一、目的 之前使用的是kettle8.2&#xff0c;不需要额外下载pentaho-hadoop-shims-hdp30-8.2.2018.11.00-342.jar&#xff0c;因为kettle8.2本身自带 但是kettle8.2在Linux上安装后建立共享资源库又有问题&#xff0c;没办法&#xff0c;只能换成kettle9.3 结果&#xff0c;k…

华为网络篇 RIPv2的基础配置-25

难度 1复杂度1 目录 一、实验原理 1.1 RIP的版本 1.2 RIP的路由更新方式 1.3 RIP的计时器 1.4 RIP的防环机制 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;&am…

微服务概述-7

Shiro 框架 Shiro 是一个用于 Java 应用程序的安全框架。它提供了身份验证、授权、加密和会话管理等功能&#xff0c;可以帮助开发人员构建安全可靠的应用程序。 Java 中针对权限管理常见的有 2 个著名的框架&#xff1a;spring security 和 shiro shiro 基本概念 credentia…

机器学习笔记 - 基于C++的​​深度学习 二、实现卷积运算

一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <

编程练习(1)

目录 一.选择题 第一题&#xff1a; 第二题&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 第五题&#xff1a; ​编辑 二.编程题 第一题&#xff1a; 第二题&#xff1a; 1.暴力方法&#xff1a; 2.数组法&#xff1a; 一.选择题 第一题&#xff1a; 解析&…

【vue】简洁优雅的火花线、趋势线

来由 在github发现个好看易用的vue趋势线组件&#xff0c;特此记录。 效果 趋势图生成后效果如上&#xff0c;线条为渐变色&#xff0c;可设置是否平滑。具体线条走势&#xff0c;根据数据动态生成。 使用 安装 npm i vuetrend -S 引入 import Vue from "vue"…

MySQL性能分析之慢查询日志查看

一、背景 MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。 慢查询日志一般用于性能分析时开启,收集慢SQL然后通过explain进行全面分析,一…

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现…

Python案例|Pandas正则表达式

字符串的处理在数据清洗中占比很大。也就是说,很多不规则的数据处理都是在对字符串进行处理。Excel提供了拆分、提取、查找和替换等对字符串处理的技术。在Pandas中同样提供了这些功能,并且在Pandas中还有正则表达式技术的加持,让其字符串处理能力更加强大。 01、正则 正则就是…

TypeScript相关面试题

typeScript 1.什么是TypeScript?是什么&#xff1f;特性&#xff1f;区别&#xff1f; 2.TypeScript数据类型&#xff1f;3.说说你对 TypeScript 中枚举类型的理解&#xff1f;应用场景&#xff1f;4.说说你对 TypeScript 中接口的理解&#xff1f;应用场景&#xff1f;使用方…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

【AGI】世界首次实现室温超导LK-99

论文&#xff1a;The First Room-Temperature Ambient-Pressure Superconductor GPT论文总结&#xff1a; 根据所提供的信息&#xff0c;这篇论文报道了一种在室温和常压下工作的室温超导体LK-99。LK-99的超导性是通过微小的结构畸变引起的&#xff0c;而不是通过温度和压力等外…

09 - 连续的多个commit整理成1个

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 将连续的多个commit整理成1个 将连续的多个commit整理成1个 将anranxiaohunzhang和xianglongshibazhang合并起来&#xff08;将anranxiaohunzhang合并到降龙十八掌上&#xff0c;生成新…

docker 学习--03 环境安装(本人使用的win10 Linux也是在win10下模拟)

docker 学习–03 环境安装&#xff08;本人使用的win10 Linux也是在win10下模拟&#xff09; docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 文章目录 docker 学习--03 环境安装&#xff08;本人使用的win10 Linux也是在win10下模拟&#xff09;[TOC](文章目录) 1. wi…

【数学建模】逻辑回归算法(Logistic Resgression)

逻辑回归算法 简介逻辑回归与条件概率绘制sigmoid函数 简介 逻辑回归算法是一种简单但功能强大的二元线性分类算法。需要注意的是&#xff0c;尽管"逻辑回归"名字带有“回归”二字&#xff0c;但逻辑回归是一个分类算法&#xff0c;而不是回归算法。 我认为&#xff…

冉冉升起的星火,再度升级迎来2.0时代!

文章目录 前言权威性评测结果 星火大模型多模态功能插件功能简历生成文档问答PPT生成 代码能力 福利 前言 前几天从技术群里看到大家都在谈论《人工智能大模型体验报告2.0》里边的内容&#xff0c;抱着好奇和学习的态度把报告看了一遍。看完之后瞬间被里边提到的科大讯飞的星火…