【走过路过,点开看看】用Python制作的五彩气球,很五彩呢

这是一个基于Python Turtle模块的气球动画程序,用于儿童节祝福。通过气球类、漂浮函数和主函数的设计,实现气球动态漂浮和祝福语展示,展现Python的可编程性和动态性。使用python画气球前,先了解一下turtle。
【走过路过,点开看看】用Python制作的五彩气球,很五彩呢_第1张图片

Turtle画板

turtle.setup(width,height) #设置画板的大小

Turtle画笔

turtle.penup() #抬起画笔
turtle.pendown() #放下画笔
turtle.pensize() #控制画笔的大小
turtle.pencolor() #控制画笔的颜色
turtle.hideturtle() #隐藏画笔

Turtle画图

turtle.forward(x) #将画笔向前移动x个像素(x可以理解为距离)
turtle.backward(x) #将画笔向后移动x个像素(x可以理解为距离)
turtle.left(n) #将画笔向左旋转n度
turtle.right(n) #将画笔向右旋转n度
turtle.speed() #设置画笔画图的速度(1~10递增,0最快

接下来模拟气球漂浮吧

设置屏幕

tu.setup(1.0, 1.0)
t = tu.Pen()
t.ht()  # 隐藏小海龟
colors = ['red', 'skyblue', 'orange', 'yellow', 'lime', 'pink', 'violet'] #气球颜色列表

初始化气球对象

    def __init__(self):
        """
        初始化气球对象
        """
        self.r = ra.randint(12, 20)  # 气球的半径
        self.x = ra.randint(-1000, 1000)  # 气球的横坐标
        self.y = ra.randint(-500, 500)  # 气球的纵坐标
        self.f = ra.uniform(-3.14, 3.14)  # 气球左右移动呈正弦函数
        self.speed = ra.randint(2, 8)  # 气球移动速度
        self.color = ra.choice(colors)  # 气球的颜色
        self.outline = 1  # 气球的外框大小(可不要)

移动气球

    def move(self):
        """
        移动气球对象的位置。

        根据当前气球的位置和速度,更新其在画布中的坐标。
        当气球超出画布下边界时,重新生成一个新的气球。
        """
        if self.y <= 500:  # 当气球还在画布中时
            self.y += self.speed  # 设置上下移动速度
            self.x += self.speed * math.sin(self.f)  # 设置左右移动速度
            self.f += 0.1  # 可以理解成标志,改变左右移动的方向
        else:  # 当气球漂出了画布时,重新生成一个气球
            # 下面的代码用于初始化一个新的气球,包括其大小、位置、速度和颜色等属性
            self.r = ra.randint(12, 20)
            self.x = ra.randint(-1000, 1000)
            self.y = -500
            self.f = ra.uniform(-3.14, 3.14)
            self.speed = ra.randint(5, 10)
            self.color = ra.choice(colors)
            self.outline = 1

绘制气球图案

    def draw(self):
        """
        绘制一个气球图案。

        该方法使用turtle图形库中的turtle对象t来绘制一个气球图案。它通过一系列的turtle命令
        实现了气球的绘制过程,包括移动、旋转、填充颜色等操作。

        参数:
        无直接参数,但依赖于实例变量self.x, self.y, self.color, 和 self.r,分别表示心形的起始位置、颜色和大小。

        返回:
        无返回值。
        """
        # 将画笔抬起,移动到气球的起始绘制位置
        t.penup()
        t.goto(self.x, self.y)
        t.pendown()

        # 设置画笔颜色为实例变量self.color指定的颜色
        t.color(self.color)

        # 将画笔左转45度,准备绘制气球的起始角度
        t.left(45)

        # 开始填充心形图案
        t.begin_fill()
        t.fillcolor(self.color)

        # 循环绘制气球的两个对称部分
        for i in range(2):
            t.circle(self.r * 2, 90)
            t.circle(self.r, 90)

        # 结束填充
        t.end_fill()

        # 隐藏turtle图标,准备进行绘制结束后的画笔调整
        t.hideturtle()

        # 调整画笔位置和方向,以准备绘制气球的凹陷部分
        t.circle(self.r, -45)
        t.right(90)
        t.circle(20, 90)

完整代码实现

import turtle as tu
import random as ra
import math

# 设置屏幕
tu.setup(1.0, 1.0)
t = tu.Pen()
t.ht()  # 隐藏小海龟
colors = ['red', 'skyblue', 'orange', 'yellow', 'lime', 'pink', 'violet']

class Balloon:
    def __init__(self):
        """
        初始化气球对象
        """
        self.r = ra.randint(12, 20)  # 气球的半径
        self.x = ra.randint(-1000, 1000)  # 气球的横坐标
        self.y = ra.randint(-500, 500)  # 气球的纵坐标
        self.f = ra.uniform(-3.14, 3.14)  # 气球左右移动呈正弦函数
        self.speed = ra.randint(2, 8)  # 气球移动速度
        self.color = ra.choice(colors)  # 气球的颜色
        self.outline = 1  # 气球的外框大小(可不要)

    def move(self):
        """
        移动气球对象的位置。

        根据当前气球的位置和速度,更新其在画布中的坐标。
        当气球超出画布下边界时,重新生成一个新的气球。
        """
        if self.y <= 500:  # 当气球还在画布中时
            self.y += self.speed  # 设置上下移动速度
            self.x += self.speed * math.sin(self.f)  # 设置左右移动速度
            self.f += 0.1  # 可以理解成标志,改变左右移动的方向
        else:  # 当气球漂出了画布时,重新生成一个气球
            # 下面的代码用于初始化一个新的气球,包括其大小、位置、速度和颜色等属性
            self.r = ra.randint(12, 20)
            self.x = ra.randint(-1000, 1000)
            self.y = -500
            self.f = ra.uniform(-3.14, 3.14)
            self.speed = ra.randint(5, 10)
            self.color = ra.choice(colors)
            self.outline = 1

    def draw(self):
        """
        绘制一个气球图案。

        该方法使用turtle图形库中的turtle对象t来绘制一个气球图案。它通过一系列的turtle命令
        实现了气球的绘制过程,包括移动、旋转、填充颜色等操作。

        参数:
        无直接参数,但依赖于实例变量self.x, self.y, self.color, 和 self.r,分别表示气球的起始位置、颜色和大小。

        返回:
        无返回值。
        """
        # 将画笔抬起,移动到气球的起始绘制位置
        t.penup()
        t.goto(self.x, self.y)
        t.pendown()

        # 设置画笔颜色为实例变量self.color指定的颜色
        t.color(self.color)

        # 将画笔左转45度,准备绘制气球的起始角度
        t.left(45)

        # 开始填充气球图案
        t.begin_fill()
        t.fillcolor(self.color)

        # 循环绘制气球的两个对称部分
        for i in range(2):
            t.circle(self.r * 2, 90)
            t.circle(self.r, 90)

        # 结束填充
        t.end_fill()

        # 隐藏turtle图标,准备进行绘制结束后的画笔调整
        t.hideturtle()

        # 调整画笔位置和方向,以准备绘制气球的凹陷部分
        t.circle(self.r, -45)
        t.right(90)
        t.circle(20, 90)

# 创建气球列表
Balloons = []
for _ in range(100):
    Balloons.append(Balloon())

# 设置背景色
tu.bgcolor('black')

# 开始漂浮
def main():
    """
    主函数,用于显示动画气球和祝福语。
    该函数会不断循环,更新屏幕上的气球位置,并在背景上写上祝福语。
    """
    while True:
        tu.tracer(0)  # 关闭动画更新,以提高绘制效率
        t.clear()  # 清除之前的绘制内容,为新的绘制做准备
        # 在画布中设置50个漂浮的气球,循环让每个气球移动和绘制
        for i in range(50):
            Balloons[i].move()  # 更新气球位置
            Balloons[i].draw()  # 绘制气球
        tu.penup()  # 准备写祝福语,先抬起笔
        tu.goto(-250, 20)  # 移动到写祝福语的位置
        tu.pendown()  # 落下笔,准备书写
        tu.color("skyblue")  # 设置书写颜色
        # 写上祝福语,使用指定的字体和样式
        tu.write("程序猿加油", font=("黑体", 80, "italic"))
        tu.hideturtle()  # 隐藏海龟图标,以改善视觉效果
        tu.update()  # 更新屏幕,显示所有的更改


if __name__ == "__main__":
    main()



你可能感兴趣的:(python,python,开发语言)