【python】Python Turtle绘制流星雨动画效果(附源码)

        在这篇技术博客中,我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现,我们可以在画布上展现出流星闪耀的场景,为视觉带来一丝神秘与美感。

一、效果图:

  二、准备工作

(1)、导入必要的模块:

       代码首先导入了需要使用的模块:requests、lxml和csv。

import requests
from lxml import etree
import csv

        如果出现模块报错

c124a1693bfc457ba1f2909ee9d299fc.png

        进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple

阿里云
https://mirrors.aliyun.com/pypi/simple/

豆瓣
https://pypi.douban.com/simple/ 

百度云
https://mirror.baidu.com/pypi/simple/

中科大
https://pypi.mirrors.ustc.edu.cn/simple/

华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/

腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

三、介绍

        通过 Python 的 Turtle 模块,我们可以轻松地在屏幕上绘制各种形状和动画效果。本次项目旨在利用 Turtle 模块创建一个流星雨的动画效果,让多个流星在画布上闪烁移动,营造出夜空中流星划过的美丽景象。

四、代码实现

Star 类

        首先,我们定义了一个 Star 类,用于表示单个流星对象。这个类包含以下方法:

  • __init__(self):初始化流星对象的属性,包括随机生成流星的半径、粗细、位置、速度、颜色等。
  • star(self):绘制单个流星,设置流星的大小、位置、颜色,并利用 Turtle 绘制出流星的形状。
  • move(self):控制流星的移动,根据设定的速度使流星向下移动,当流星移出画布时重新设置流星的属性,使其重新出现在画布顶部。

主程序部分

        在主程序部分,我们执行以下步骤:

  1. 创建一个空的列表 Stars,用于保存所有的流星对象。
  2. 使用循环创建了 100 个流星对象并添加到 Stars 列表中。
  3. 进入主绘制循环,关闭实时绘制以提高绘制速度,然后清空画布,依次更新每个流星对象的位置并绘制出来,最后更新画布以显示动画效果。
  4. 主事件循环会一直运行,直到手动关闭窗口。

        通过以上代码,我们能够实现一个简单而有趣的流星雨动画效果。每个流星在画布上闪烁移动,营造出流星划过夜空的美丽景象。

  1. 导入必要的模块:
    import turtle as tu
    import random as ra
    import math

  2. 设置画布和背景色:
    tu.setup(1.0, 1.0)  # 设置画布大小
    tu.screensize(1.0, 1.0)
    tu.bgcolor('black')  # 设置画布颜色

  3. 创建Pen对象并隐藏画笔:
    t = tu.Pen()
    t.ht()  # 隐藏画笔

  4. 定义流星类Star,包括初始化方法__init__和两个动作方法starmove
    • __init__(self):初始化流星对象的属性,包括随机生成流星的半径、粗细、位置、速度、颜色等。

    • star(self):绘制单个流星,设置流星的大小、位置、颜色,并利用Turtle绘制出流星的形状。

    • move(self):控制流星的移动,根据设定的速度使流星向下移动,当流星移出画布时重新设置流星的属性,使其重新出现在画布顶部。

  5. 创建流星颜色列表:
    colors = ['skyblue', 'white', 'cyan', 'aqua']  # 流星的颜色列表

  6. 在主程序部分:
    • 创建100个流星对象并添加到Stars列表中。

    • 进入主绘制循环,关闭实时绘制以提高绘制速度,然后清空画布,依次更新每个流星对象的位置并绘制出来,最后更新画布以显示动画效果。

  7. 主事件循环会一直运行,直到手动关闭窗口。

五、完整代码:

         在微信搜索公众号:英杰代码编程 或者 扫描下方名片关注后,回复: 流星雨 即可查看:

        部分代码:

import turtle as tu
import random as ra

import math

tu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)  # 设置画布大小
tu.bgcolor('black')  # 设置画布颜色
t = tu.Pen()
t.ht()  # 隐藏画笔
colors = ['skyblue', 'white', 'cyan', 'aqua']  # 流星的颜色列表


class Star():  # 流星类

    def __init__(self):

        通过这个项目,我们不仅学习了如何使用 Python 的 Turtle 模块创建动画效果,还体验了通过编程模拟自然现象的乐趣。希望本文对您有所启发,欢迎尝试运行代码,自行调整参数或添加新功能,创造出更加丰富多彩的动画效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生产报工异常信息提示器如何精确提醒管理人员

在现代生产环境中,生产报工异常信息的及时提醒对于管理人员来说至关重要。为了精确提醒管理人员并确保生产流程的顺利进行,智能信息接收腕表作为一种先进的工具,结合了多项功能,可以有效地实现生产报工异常信息的精确提醒。以下将…

【vmware安装群晖】

vmware安装群晖 vmware安装群辉: vmware版本:17pro 下载链接, https://customerconnect.vmware.com/cn/downloads/details?downloadGroupWKST-1751-WIN&productId1376&rPId116859 激活码可自行搜索 教程: https://b…

RK3568 Android12 适配抖音 各大APP

RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…

day09_面向对象_构造方法_封装

今日内容 零、 复习昨日 一、构造方法 二、重载 三、封装 零、 复习昨日 1 类和对象是什么关系? 类是模板(原材料)对象是具体实例(成品)类创建出对象 2 类中有什么?(类的成员) 成员属性(成员变量), 成员方法 3 创建对象的语法? 类名 对象名 new 类名(); 4 调用对象属性,方法…

Spade CNN技术细节

Input: (1,3,256,64,128) 做downsample 成 : (1,3,8,16,32) 首先有一个 EqualConv3D(3,128,3,3,stride1,padding1) 对 input 进行卷积得到: (1,128,8,16,32) input channel: 3 output channel: 128 EqualConv3D 就是一个普通的3D CNN, 只是 用到了 equ…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

Rocky Linux 运维工具 ls

一、ls 的简介 ​​ls​ 用于列出当前目录下的文件和目录,以及它们的属性信息。通过 ​ls​命令可以查看文件名、文件大小、创建时间等信息,并方便用户浏览和管理文件。 二、ls 的参数说明 序号参数描述1-a显示所有文件,包括以 ​.​开头的…

C# OpenVINO Nail Seg 指甲分割 指甲检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Nail Seg 指甲分割 指甲检测 效果 模型信息 Model Properties ------------------------- date:2024-02-29T16:41:28.273760 author:Ultralytics task:segment version&#…

msys2使用MinGW64编译ffmpeg 64bit库

搭建编译环境 下载安装msys2,参考文章《QT Mingw编译ffmpeg源码以及测试》。 安装必要的库文件 双击msys2安装目录下的msys2.exe,在cmd窗口中执行以下命令: //升级所有库 pacman -Syu //使用下列命令安装ffmpeg编译的依赖和工具 pacman -S mingw-w64-x8…

插值、逼近、拟合、光顺

插值 插值(Interpolation)是数学和计算科学中的一个重要概念,它指的是通过已知的一系列数据点,构造一个函数或曲线,并据此估计未知数据点的值。这个过程通常发生在已知数据点之间,用于预测或估算在这些已知…

操作系统系列学习——系统调用的实现

文章目录 前言系统调用的实现 前言 一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油! 本文总结自B站【哈工大】操作系统 李治军(全32讲) 老师课程讲的非常好,感谢 【哈工…

【飞桨EasyDL】飞桨EasyDL发布的模型转换onnx(附工程代码)

一个愿意伫立在巨人肩膀上的农民...... 一、paddle转onnx转rknn环境搭建 paddle转onnx和onnx转rknn两个环境可以分开搭建,也可以搭建在一起。这里选择分开搭建,先搭建paddle转onnx。 1.1、创建环境 选择python3.8.13包进行创建环境 conda create --nam…

事物管理(黑马学习笔记)

事物回顾 在数据库阶段我们已学习过事务了,我们讲到: 事物是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时…

经典DP-最长单调子序列

最长递增子序列 思路 定义状态: 我们定义一个数组 dp,其中 dp[i] 表示以 nums[i] 结尾的最长递增子序列的长度。初始化状态: 对于数组中的每个元素 nums[i],初始时都可以被视为一个长度为1的递增子序列,因此 dp[i] 的…

Mac电脑输入正确密码后提示密码错误

🏝 背景 Mac Pro 在擦键盘时,屏幕一直亮起,导致密码一致输入错误,想来没有什么问题便没有处理。但是!!!在擦完键盘后输入正确的密码依旧提示密码错误😱 接下来就是不断的重启、关机…

如何制作一款建材商城微信小程序

现在,微信小程序已经成为了很多企业和商家开展线上业务的重要渠道之一。对于建材商城而言,制作一款专属的微信小程序可以帮助企业更好地展示产品、提供服务,并增加销售额。下面将介绍如何制作一款建材商城微信小程序。 首先,登录【…

ai作画在线生成!这8个AI生图工具一定要知道。

过去的2023年被称作AI元年,随之而来的2024,被业内人士称之为AI应用元年,即随着大模型和各类AI应用的涌现速度放缓,人们关注的焦点也从产品层面(有哪些好用的AI应用),转移到AI如何更好地赋能实际…

如何下载和配置Linux(使用VMware部署Centos)--看这篇文章就懂了

目录: LinuxLinux概述Linux特点Linux的各个发行版本Linux和Windows区别 Linux的下载和安装安装VMWare虚拟机和Centos安装Centos实现Linux的远程登录使用Xshell连接 Linux Linux概述 Linux内核最初只是由芬兰人林纳斯托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。 …

会声会影2024出来了吗?

近年来,随着人们对于娱乐和创意的需求不断增长,视频编辑软件也越来越受到大众的关注。其中,会声会影是一款备受欢迎的视频编辑软件,许多用户都在关注其新版本——会声会影2024。 然而,目前并没有官方宣布会声会影2024的…

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络(CNN):细致的艺术学徒生成对抗网络(GAN):画家与评审的双重角色…