【python】Python Turtle绘制流星雨动画效果
import turtle
import random
# 设置窗口大小和标题
turtle.title("流星雨")
turtle.setup(width=800, height=600)
turtle.speed(0)
# 隐藏画笔
turtle.ht()
# 流星类定义
class Meteor:
def __init__(self):
self.x = random.randint(-turtle.window_width()//2, turtle.window_width()//2)
self.y = random.randint(-turtle.window_height()//2, turtle.window_height()//2)
self.size = random.randint(2, 5)
self.color = (random.random(), random.random(), random.random())
self.speed = random.randint(10, 50)
self.t = turtle.Turtle(shape="triangle")
self.t.color(self.color)
self.t.pen(fillcolor=self.color, pencolor=self.color)
self.t.setheading(random.randint(0, 360))
self.t.speed(self.speed)
self.t.up()
self.t.goto(self.x, self.y)
self.t.down()
self.t.shift(self.x, self.y)
def move(self):
self.t.forward(self.size)
self.t.right(90)
self.t.forward(self.size)
self.t.right(90)
self.t.forward(self.size)
self.t.right(90)
def is_visible(self):
return self.t.isvisible()
# 创建流星集合
meteors = [Meteor() for _ in range(100)]
# 绘图循环
turtle.tracer(0)
for meteor in meteors:
meteor.move()
if not meteor.is_visible():
meteor.t.hideturtle()
meteor.t.setx(random.randint(-turtle.window_width()//2, turtle.window_width()//2))
meteor.t.sety(random.randint(-turtle.window_height()//2, turtle.window_height()//2))
meteor.t.showturtle()
turtle.tracer(1)
# 开始动画循环
turtle.done()
这段代码使用Python的turtle模块创建了一个流星雨的动画效果。它首先设置了窗口的大小和标题,然后定义了流星类,包括流星的属性(位置、大小、颜色、速度等)和移动方法。接着,它创建了一个流星集合,并在一个无限循环中更新流星的位置,如果流星移出窗口,则将其隐藏并在随机位置重新显示。最后,使用turtle.done()保持窗口打开,动画可以持续运行。
评论已关闭