一只有趣的兔子
写在前面
动感光波!本文小编给大家带来Python实现的爱心光波动态效果图,一起来看看吧~(文末可以免费下载代码哦)
情人节告白
1、星河滚烫,不如你眼眸璀璨;人间烟火,不及你笑颜如花。
2、你的过去,我来不及参与;你的未来,我奉陪到底。
3、你对我一见倾心,我对你一见如故。初遇是你,余生都是你。
4、不求朝朝暮暮,但愿岁岁年年,都能与你共度温馨浪漫的情人节。
完整代码
import turtle as tu
import random as ra
tu.setup(1.0, 1.0) # 设置画板大小(小数表示比例,整数表示大小)
tu.screensize(1.0, 1.0) # 设置屏幕大小
tu.bgcolor('black') # 设置画布背景颜色
tu.title('爱心光波')
t = tu.Pen() # 设置画笔
t.ht() # 隐藏画笔
colors = ['pink', 'hotpink', 'deeppink', 'lightpink'] # 爱心的颜色列表,可以设置自己喜欢的颜色噢
# colors = ['skyblue', 'lightblue', 'blue', 'royalblue'] # 蓝色系
class Love(): # 爱心类
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)
Loves = [] # 爱心列表
for i in range(200): # 循环增加爱心
Loves.append(Love(i + 1))
while True: # 开始画爱心
tu.tracer(0)
t.clear()
for i in range(99):
Loves[i].draw()
Loves[i].change()
tu.update()
tu.mainloop()
代码分析
这段代码是用Python的turtle库实现的一个动画程序,它会生成一系列不断变化大小、颜色和位置的心形,并在黑色背景上进行绘制。以下是该代码的详细分析:
-
首先导入turtle模块(别名tu)和random模块(别名ra),turtle库是一个图形绘制库,常用于教学编程入门,random库则用来生成随机数。
-
tu.setup(1.0, 1.0)
设置画布窗口的宽高比为1:1,也就是说窗口将是正方形。 -
tu.screensize(1.0, 1.0)
虽然通常用于设置屏幕大小(以像素为单位),但在此处由于传入的是比例值,可能不会生效或者与tu.setup()
有冲突,实际应用中一般不与setup()
同时使用,或者应提供具体的像素尺寸。 -
tu.bgcolor('black')
将画布背景色设为黑色。 -
初始化一个画笔对象
t = tu.Pen()
,所有后续的绘画操作将通过这个画笔执行。 -
t.ht()
隐藏画笔,即在移动画笔时不显示轨迹。 -
定义了一个颜色列表
colors
,包含四种不同的粉色系颜色,这些颜色将被用于心形的填充。 -
定义了一个名为
Love
的类,表示一个心形对象,其中:-
\_\_init\_\_(self, r)
是初始化方法,设置心形的半径、初始坐标、随机选择的颜色及外框大小。 -
draw(self)
方法用于绘制心形,采用特定的算法(两个圆弧和两条直线组合)来画出心形,并设定填充和轮廓颜色。 -
change(self)
方法设计了心形的变化规则:当心形半径小于等于100时增大半径;达到最大半径后,重置心形的位置、颜色以及重新随机半径。
-
-
创建一个空列表
Loves
,然后通过循环创建200个不同大小的心形实例并添加到列表中。 -
进入无限循环,在循环内部:
-
使用
tu.tracer(0)
关闭tracer,提高动画性能,让turtle一次性完成所有的绘图命令后再更新屏幕。 -
清除当前画布上的内容 (
t.clear()
)。
-
遍历
Loves
列表中的每个心形实例,调用它们的draw()
方法进行绘制,并调用change()
方法更新其状态。
- 最后调用`tu.update()` 更新屏幕,显示新一帧的画面。
11. tu.mainloop()
开始主循环,等待事件触发。在这个案例中,因为没有显式地设置结束条件,所以程序将在while循环内持续运行,不断绘制并更新心形的状态。
总结起来,这个程序构建了一个动态心形动画,其中心形数量固定为200个,它们不断地按照一定规律改变大小、颜色和位置,营造出一种浪漫且动感的效果。
运行结果
情人节系列
下载代码
公众号内回复:python031
输入提取码:cqa9
写在后面
我是一只有趣的兔子,感谢你的喜欢!