Python爱心光波

news2025/1/16 20:11:34

爱心光波

文章目录

  • 前言
    • 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 ra

tu.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 += 1
        else:
            self.r = 1
            self.x = 0
            self.y = 120
            self.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.coloradmin.cn/o/885080.html

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

相关文章

avue 时间选择器限制时间范围(当天以后的时间、当前月、当前月剩余时间)

时间选择器做项目时必不可少的组件&#xff0c; 今天就简单举几个常用的例子供参考。 <avue-form v-model"form" :option"option"></avue-form><script> export default {data() {return {form:{},option:{column: [{label: "禁止日…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)八:自定义组件封装上

一、本章内容 本章实现一些自定义组件的封装,包括数据字典组件的封装、下拉列表组件封装、复选框单选框组件封装、单选框组件封装、文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 ![在这里插入图…

阿里云OSS对象存储的核心概念与购买应用

文章目录 1.OSS对象存储基本介绍1.1.OSS对象存储概念1.2.NAS与OSS存储的不同1.3.OSS的应用场景1.4.OSS术语对应表 2.购买OSS存储资源包3.KodCloud云盘接入OSS对象存储3.1.创建Bucket存储空间3.2.创建子用户用于管理Bucket3.3.获取用户的AccessKey3.3.为用户设置权限3.4.将Bucke…

ceph数据分布

ceph的存储是无主结构&#xff0c;数据分布依赖client来计算&#xff0c;有两个条主要路径。 1、数据到PG 2、PG 到OSD 有两个假设&#xff1a; 第一&#xff0c;pg的数量稳定&#xff0c;可以认为保持不变&#xff1b; 第二&#xff0c; OSD的数量可以增减&#xff0c;OSD的…

.NET6导入导出Excel

一、使用NPOI导出Excel //引入NPOI包 HTML <input type"button" class"layui-btn layui-btn-blue2 layui-btn-sm" id"ExportExcel" onclick"ExportExcel()" value"导出" />JS //导出Excelfunction ExportExcel() {…

判断推理 -- 图形推理 -- 属性规律

中心对称&#xff1a;取一个点&#xff0c;穿过中心能找到另一个对称点。把轴对称 中心对称标出来。五角星不是中心对称。 BD对称轴方向相同&#xff0c;但135自带对称轴&#xff0c;24没带&#xff0c;所以6应该不带对称轴。 百分号不是轴对称。 白色对称轴 平行 或者 夹角…

Python项目实战:创建 + 激活虚拟环境

文章目录 步骤一&#xff1a;新建虚拟环境 激活虚拟环境&#xff08;1.1&#xff09;BUG&#xff1a;激活后显示的Python版本与新建时指定的并不相同。&#xff08;1.2&#xff09;激活成功&#xff1a;在Anaconda软件的环境配置中&#xff0c; 将出现一个py39的虚拟环境。 步…

描述符(__get__和__set__和__delete__)

目录 一、描述符 二、描述符的作用 2.1 何时&#xff0c;何地&#xff0c;会触发这三个方法的执行 三、两种描述符 3.1 数据描述符 3.2 非数据描述符 四、描述符注意事项 五、使用描述符 5.1 牛刀小试 5.2 拔刀相助 5.3 磨刀霍霍 5.4 大刀阔斧 5.4.1 类的装饰器:无…

【校招VIP】常见产品分析之微信

考点介绍&#xff1a; 面试对微信功能的分析和提问是非常常见的&#xff0c;一方面需要明确微信自身产品功能的特点和取舍&#xff0c;另一方面也需要与同类的社交APP进行对比思考分析。 『常见产品分析之微信』相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考…

《2023年度数据安全与管理状况报告》:勒索威胁激增!

上半年发布的《2023年度数据安全与管理状况报告》揭示出数据安全领域的重要趋势和问题。报告显示&#xff0c;勒索活动日益增多&#xff0c;可大多数企业仍然缺乏必要的网络复原策略和数据安全能力来应对威胁并保持业务连续性。 93%的受访者表示&#xff0c;今年勒索软件攻击的…

C语言实现epoll简洁代码

1.1、函数定义 int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);作用&#xff1a; 等待监听的所有fd相应事件的产生。 1.2、参数详解&#xff1a; 1) int epfd&#xff1a; epoll_create()函数返回的epoll实例的句柄。 2) struct epol…

Centos7下python3安装gdal库

Background GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。Github地址&#xff1a;https://github.com/OSGeo/gdal每一个地理空间…

SpringBoot概述及项目的创建使用

文章目录 一. Spring Boot概述1. 什么是Spring Boot&#xff1f;2. Spring Boot的优点 二. Spring Boot项目的创建1. 使用IDEA创建1.1. 准备工作1.2. 创建运行Spring Boot项目1.3. 进行Web交互1.4. 目录工程介绍1.5. 项目快速添加依赖1.6. 防止配置文件乱码所需的配置1.7. Spri…

电商订单履约-卖家发货演化史

1 背景 订单的履约之路就是从发货开始&#xff0c;看似简单的发货功能&#xff0c;其背后却藏着许多的小秘密。 发货的业务特点&#xff1a; B端业务&#xff0c;性能要求不高&#xff0c;因为存在批量发货的场景。 发货时间比较分散&#xff0c;所以并发量不大。 业务复杂…

Studio One6.2Pro最新中文版Win+Mac新功能与BUG修复

无论你是第一次接触数字音乐工作站&#xff08;DAW&#xff09;&#xff0c;还是第一次尝试 制作属于自己的音乐&#xff0c;Studio One 都能给你非凡的体验&#xff01;如果您是一名音乐制作人&#xff0c;您是否曾经为了寻找一个合适的音频工作站而苦恼过&#xff1f;Studio …

力扣:64. 最小路径和(Python3)

题目&#xff1a; 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a…

例行性工作

上述方法关机就没了&#xff0c;开机需要再次挂载&#xff0c;我们可以设置开机自动挂载&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 一、单一执行的例行性工作 1、at命令的工作过程 默认有黑名单&#xff0c;黑名单里面没有人&#xff0c;没有allow&#xff0c;表示…

Appium Desktop安装

【提示&#xff1a;官方已不再维护&#xff0c;建议命令行方式安装&#xff0c;但可以学习了解一下】 Appium Desktop是一款适用于Mac、Windows和Linux的应用程序&#xff0c;它以漂亮灵活的UI为您提供Appium自动化服务器的强大功能。它基本上是Appium Server的图形界面。您可…

【数据分享】2006-2021年我国城市级别的各类建设用地面积数据 (工业用地/居住用地等十几个指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标&#xff08;可查看之前的文章获悉&#xff09;。…

[oneAPI] 手写数字识别-卷积

[oneAPI] 手写数字识别 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolkitSam…