Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3648121
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2023-01-09 17:17:00

def simulate(cv):

python学习交流Q群:309488165 ### 源码领取

    t = time()

    #返回自1970年后经过的浮点秒数,精确到小数点后7

    explode_points = []

    #爆炸点列表,烟花列表

    wait_time = randint(10,100)

    #等待时间为10100之间整数

    numb_explode = randint(8,20)

    #爆炸烟花个数时610之间的随机整数

    # create list of list of all particles in all simultaneous explosion

    for point in range(numb_explode):

        #为所有模拟烟花绽放的全部粒子创建一列列表

        if point<=4:

            objects = []

            #每个点的爆炸粒子列表粒子列表

            x_cordi = 250 + point*50

            #每个爆炸点的x

            y_cordi = 100

            #每个爆炸点的y

            speed = uniform (0.5, 2.5)

            #每个爆炸点的速度

            size = uniform (0.5,3)

            #每个爆炸点的大小

            color = choice(colors)

            #每个爆炸点的颜色

            explosion_speed = uniform(0.6, 3)

            #爆炸的绽放速度

            total_particles = randint(10,60)

            #烟花的总粒子数

            for i in range(1,total_particles):

            #同一个烟花爆炸出来的粒子大小、速度、坐标都是相同的

                r = part(cv, idx = i, total = total_particles, explosion_speed = explosion_speed, x = x_cordi, y = y_cordi, vx = speed, vy = speed, color=color, size = size, lifespan = uniform(0.6,1.75))

                #把上述参数代入part函数,但是每个粒子的生存时间是自己独立的

                objects.append(r)

                #r添加进粒子列表

            explode_points.append(objects)

            #把粒子列表添加进烟花列表

        else:

            objects = []

            #每个点的爆炸粒子列表粒子列表

            x_cordi = randint(50,550)

            #每个爆炸点的x

            y_cordi = randint(50, 250)

            #每个爆炸点的y

            speed = uniform (0.5, 2.5)

            #每个爆炸点的速度

            size = uniform (0.5,3)

            #每个爆炸点的大小

            color = choice(colors)

            #每个爆炸点的颜色

            explosion_speed = uniform(0.3, 2)

            #爆炸的绽放速度

            total_particles = randint(10,50)

            #烟花的总粒子数

            for i in range(1,total_particles):

            #同一个烟花爆炸出来的粒子大小、速度、坐标都是相同的

                r = part(cv, idx = i, total = total_particles, explosion_speed = explosion_speed, x = x_cordi, y = y_cordi, vx = speed, vy = speed, color=color, size = size, lifespan = uniform(0.6,1.75))

                #把上述参数代入part函数,但是每个粒子的生存时间是自己独立的

                objects.append(r)

                #r添加进粒子列表

            explode_points.append(objects)

            #把粒子列表添加进烟花列表

    total_time = .0

    #初始化总时间

    # keeps undate within a timeframe of 1.8 second

    while total_time < 2:

    #当总时间小于1.8秒时运行该循环

        sleep(0.03)

        #让画面暂停0.01

        tnew = time()

        #刷新时间

        t, dt = tnew, tnew - t

        #时间等于新时间,和上次时间间隔为tnew-t

        for point in explode_points:

        #遍历烟花列表

            for item in point:

            #遍历烟花里的粒子列表

                item.update(dt)

                #粒子更新时间

        cv.update()

        #刷新画布

        total_time += dt

        #while循环增加时间

    root.after(wait_time, simulate, cv)

    #将组件置于其他组件之后,放在{BANNED}最佳顶层,覆盖下面的,递归调用自己,形成新一轮的爆炸

def close(*ignore):

    #打开模拟循环并关闭窗口

    """Stops simulation loop and closes the window."""

    global root

    root.quit()

if __name__ == '__main__':

    root = tk.Tk()

    root.title('新年快乐~~')  # 设置窗体的标题栏

    cv = tk.Canvas(root, height=600, width=600)

    #绘制一个高600,宽600的画布

    bgpath = filedialog.askopenfilename(title='请选择背景图片')

    #选择背景图片

    image = Image.open(bgpath)

    #打开背景图片

    image = image.resize((600,600), Image.ANTIALIAS)

    #把背景图片调整成窗口大小

    photo =跟单网gendan5.com ImageTk.PhotoImage(image)

    cv.create_image(0, 0, image=photo, anchor='nw')

    #在画布上绘制加载的背景图片

    bgmusic = filedialog.askopenfilename(title='请选择背景音乐')

    py.mixer.init()

    # 初始化

    py.mixer.music.load(bgmusic)

    # 文件加载

    py.mixer.music.play(-1, 0, fade_ms=50)

    # 播放  {BANNED}中国第一个是播放值 -1代表循环播放, 第二个参数代表开始播放的时间

    py.mixer.music.pause()

    #暂停

    py.mixer.music.unpause()

    #取消暂停

    cv.pack()

    #cv添加进去

    root.protocol("WM_DELETE_WINDOW", close)

    root.after(200, simulate, cv)

    #0.1秒后再调用stimulate函数,生成一轮烟花绽放效果

    root.mainloop()

    #执行root,生成窗口

阅读(667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~