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

写在前面

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

一闪一闪亮星星

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

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

本文小编将用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绘图和图形动画。你可以通过尝试不同的代码来绘制更多的图形和动画,提升你的编程能力。

张万森,下雪了

运行结果

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

程序设计


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()方法来刷新画布,完成一次绘制。

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

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

写在后面

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

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

12-28 16:56