Python实现张万森下雪了的效果

写在前面

即将步入婚宴殿堂的女主林北星,遭遇了男友展宇的毁约,生活和工作也变得一团糟。与此同时,她被时光老人带回了十八岁的高三时光,重新开启了自己的人生。林北星摆脱了展宇的束缚,认真准备高考,想要为了自己活一次。然而,她却遇到了改变自己命运的男主张万森,并开始试图拯救他……

一闪一闪亮星星

《一闪一闪亮星星》是由陈小明、章攀执导,张佳宁、屈楚萧领衔主演,吴希泽、傅菁、骆明劼、蒋昀霖、徐紫茵主演的奇幻悬疑爱情剧。该剧讲述了林北星意外删除旧手机中的短信回到过去,重新认识了昔日陌路校友张万森,从而展开一段奇妙的时空拯救之旅的故事。

有人说,张万森下雪了的意思是我想你了;也有人说,张万森下雪了就是表达一个男孩对于暗恋女孩的感受。小编觉得“张万森下雪了”是一个含蓄的告白,小伙伴们觉得呢~

本文小编将用python画出“张万森,下雪了”,Let's start!

Turtle入门

turtle是Python编程语言中的一个模块,用于绘制图形和图形动画。它最初在Logo编程语言中使用,用于教育孩子们进行绘图操作。现在,它已经成为Python绘图和图形动画的一个重要工具。下面,我们来介绍一下turtle模块的基本用法和入门指南。

首先,需要导入turtle模块,可以使用以下代码:

import turtle

接下来,我们创建一个画板和一个画笔,可以使用以下代码:

window = turtle.Screen()  # 创建一个画板
pen = turtle.Turtle()  # 创建一个画笔

在turtle中,画笔默认是箭头形状。现在,我们可以使用画笔来绘制一些基本的图形,比如正方形、三角形和圆形。以下是一些示例代码:

# 绘制正方形
for _ in range(4):
    pen.forward(100)  # 向前移动100个单位
    pen.right(90)  # 右转90度

# 绘制三角形
for _ in range(3):
    pen.forward(100)
    pen.right(120)

# 绘制圆形
pen.circle(100)

除了基本的图形绘制,我们还可以使用turtle模块来绘制更复杂的图形和图形动画。例如,我们可以使用循环和条件语句来绘制一些有趣的图案,比如螺旋线、星星和花朵。以下是一些示例代码:

# 绘制螺旋线
for i in range(100):
    pen.forward(i)
    pen.right(90)

# 绘制星星
for _ in range(5):
    pen.forward(100)
    pen.right(144)

# 绘制花朵
for _ in range(36):
    pen.forward(50)
    pen.right(50)
    pen.forward(50)
    pen.right(130)
    pen.forward(50)
    pen.right(50)
    pen.forward(50)
    pen.right(130)
    pen.right(10)

在绘制图形时,可以使用不同的颜色和线条粗细来美化图形。以下是一些示例代码:

pen.color("red")  # 设置画笔颜色为红色
pen.pensize(3)  # 设置画笔线条粗细为3个单位

最后,当我们完成图形绘制后,需要关闭画板,可以使用以下代码:

turtle.done()  # 关闭画板

以上就是turtle模块的基本用法和入门指南。希望这能帮助你快速入门turtle绘图和图形动画。你可以通过尝试不同的代码来绘制更多的图形和动画,提升你的编程能力。

张万森,下雪了

运行结果

程序设计


import turtle as tu
import random as ra
import time
tu.setup(1.0, 1.0)
tu.bgcolor('black')  #设置画布颜色
tu.title("雪花")
t = tu.Pen()
t.ht()               #隐藏画笔
colors = ['white']   #雪花的颜色列表
class Snow():    #雪花类
    def __init__(self):
        self.r = ra.uniform(2,4)       #雪花的半径
        self.x = ra.randint(-1000,1000)   #雪花的横坐标
        self.y = ra.randint(500,1000)     #雪花的纵坐标
        self.speed = ra.randint(5,20)     #雪花移动速度
        self.color = ra.choice(colors)    #雪花的颜色
        self.outline = 2                  #雪花的大小

……完整程序见文末公众号喔

程序分析

这段代码使用turtle模块绘制了一个下雪的动画,并在画布上添加了一段文字。让我们逐行来分析一下代码的具体实现。

首先,导入了turtle和random模块,并设置了画板的背景颜色和标题。然后创建了一个画笔对象t,并隐藏了画笔。

接下来定义了一个Snow类,用来创建雪花对象。在Snow类的构造函数中,使用random模块生成雪花的属性,如半径、横坐标、纵坐标、移动速度和颜色。其中,颜色列表为['white']。

在Snow类中定义了两种绘制雪花的方法。第一种方法采用turtle的circle函数绘制一个实心的雪花。第二种方法则是通过turtle的forward和backward函数以及角度转向来绘制雪花的花瓣形状。

接着定义了Snow类的move方法,用来实现雪花的移动效果。如果雪花还在画布内部,则将雪花的纵坐标递减,实现向上移动的效果。否则,重新生成一个雪花对象,使其重新从上方开始下落。

接下来创建了一个存储雪花对象的列表Snows,并使用一个for循环来生成199个雪花对象,并存储到列表中。

在主循环中,使用tu.tracer(0)来关闭图形的自动刷新,以提高程序的运行速度。然后清除画布上的内容,并绘制一个文字“我 好 想 你”。接着使用一个for循环遍历所有的雪花对象,调用它们的move()方法和snow()方法来实现雪花的移动和绘制。最后使用tu.update()方法来刷新画布,完成一次绘制。

整个程序将在一个无限循环中执行,实现了一个持续下雪的动画效果。

在代码中还有一部分被注释掉了,这部分代码是在画布上显示文字并进行清除的动画效果,你可以取消注释来观察效果。

写在后面

我是一只有趣的兔子,感谢你的喜欢!

【注】博主的所有原创文章仅供学习使用,禁止转载以及商业盈利,如被发现后果自负!

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

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

相关文章

【深度学习-目标检测】05 - YOLOv1 论文学习与总结

论文地址:You Only Look Once:Unified, Real-Time Object Detection 论文学习 1. 摘要 YOLO的提出:作者提出了YOLO,这是一种新的目标检测方法。与传统的目标检测方法不同,YOLO将目标检测视为一个回归问题,直接从图像…

【数据结构】六、树和二叉树

目录 一、树的基本概念 二、二叉树 2.1二叉树的性质 2.2二叉树的存储结构 2.3遍历二叉树 先序遍历 中序遍历 后序遍历 层次遍历 2.4二叉树的应用 计算叶子数 前序遍历建树 根据序列恢复二叉树 计算树的深度 判断完全二叉树 三、线索二叉树 3.1线索化 四、树和森林…

redis的搭建及应用(三)-Redis主从配置

Redis主从配置 为提升Redis的高可用性,需要搭建多个Redis集群以保证高可用性。常见搭建方式有:主从,哨兵集群等,本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置,以端口号为redis的主从文件夹。 主…

前缀和——OJ题(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、和为 k 的子数组1、题目讲解2、思路讲解3、代码实现 二、和可被 K 整除的⼦数组1、题目讲…

office bookmarks

Word2007Util.java-CSDN博客

Linux 安装 Tomcat

1、找到安装包 2、解压缩 tar -xzvf xxx.tar.gz Tomcat 很好安装,已经安装好了 3、启动、关闭Tomcat 进入解压后文件夹之后,两个文件分别是启动和关闭 sh startup.sh // 启动 sh shutdown.sh // 关闭 然后就行了 4、主机连接虚拟机Tomcat 注意这里填写…

使用 SSH 方式实现 Git 远程连接GitHub

git是目前世界上最先进的分布式版本控制系统,相比于SVN,分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作!当有网络的时候,再把本地提交推送一下就完成了同步&…

HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou OnlyForYou 是一台中等难度的 Linux 计算机,其特点是 Web 应用程序容易受到本地文件包含 (LFI) 的影响,该应用程序用于访问源代码,从而揭示盲目命令注入漏洞,从而导致目标系统上的 shell。该计…

智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜣螂算法4.实验参数设定5.算法结果6.参考文献7.MA…

数据结构和算法:二分法

文章目录 一&#xff1a;最基本的二分法使用else if收缩空间&#xff0c;思路更清晰防止数据太大溢出int的范围什么情况使用while(left < right)&#xff1f;为什么这个时候right nums.length - 1&#xff1f;什么情况使用while(left < right)&#xff1f;为什么这个时候…

Docker 概念介绍

1、Docker 简介 Docker一个快速交付应用、运行应用的技术: 可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器&#xff0c;各个应用互不干扰启动、移除都可以通过一行命令完成&#xff0c;方便快捷 Doc…

RustDesk连接客户端提示key不匹配 Key Mismatch无法连接(已解决)

环境: RustDesk1.1.9 服务端docker部署 问题描述: RustDesk连接客户端提示key不匹配 Key Mismatch无法连接 解决方案: 1.docker部署RustDesk服务检查配置 networks:rustdesk-net:external: falsevolumes:hbbr:hbbs:services:hbbs:container_name: rustdesk-hbbsport…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 &#x1f354;发放优惠券&#x1f386;基本操作&#x1f384;数据库表&#x1f6f8;思路&#x1f339;代码实现 &#x1f386;完善后的操作&#x1f6f8;乐观锁&#x1f339;代码实现 &#x1f354;一人仅一张优惠券&#x1f6f8;思路&#x1f339;代码⭐代码分析 &am…

微信小程序开发系列-05登录小程序

本文继续学习下微信小程序登录相关的内容。 微信平台小程序用户体系 普通用户视角&#xff1a;对于每个小程序&#xff0c;微信都会将用户的微信ID映射出一个小程序OpenID&#xff0c;作为这个用户在这个小程序的唯一标识。&#xff08;注意&#xff1a;同一微信用户在不同小…

unityc用vs2017介绍

21版unity能用17vs&#xff0c;只要在unity的Edit/Preferences/ExternalTools里面改既可。

继承-继承方式

继承方式 继承的语法: class 子类 &#xff1a;继承方式 父类 继承方式一共有三种&#xff1a; 1.公共继承 2.保护继承 3.私有继承 //继承方式 #include<iostream> using namespace std; class Base1 { public:int m_A; protected:int m_B; private:int m_C; }; cla…

卷积神经网络基础

全连接层 BP&#xff08;back propagation&#xff09;算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行&#xff0c;而调整权值和阈值则从输出到输入的方向进行。 误差值&#xff1a;将输出值和所期望的值进行对比&#xff0c;可以…

设备智能运维利器:无线振温一体式传感器

在现代工业领域中&#xff0c;设备的状态监测和维护是确保生产正常运行的关键环节。随着技术的不断进步&#xff0c;传感器在设备监测中发挥着越来越重要的作用。其中&#xff0c;无线振温一体式传感器作为设备智能运维的利器&#xff0c;具有独特的优势和潜力。本文将介绍无线…

C++ Qt开发:TableView与TreeView组件联动

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TableView与TreeView组件联动的常用方法及灵活…

Transfer Learning(迁移学习)

1. 什么是迁移学习 迁移学习(Transfer Learning)是一种机器学习方法&#xff0c;就是把为任务 A 开发的模型作为初始点&#xff0c;重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务&#xff0c;虽然大多数机器学习算法都…
最新文章