zoukankan      html  css  js  c++  java
  • 来自程序员的圣诞节浪漫-用Python画一棵带音乐的雪夜圣诞树

    本文我们用 Python 来画一棵带音乐效果的雪夜圣诞树,基本思路如下:

    • 用 Python 画一棵圣诞树作为背景图
    • 在圣诞树背景图中添加雪落效果及音乐

    下面来看一下具体实现。

    首先,我们来画一棵圣诞树,主要用到的 Python 库为 turtle,主要代码实现如下:

    n = 80.0
    turtle.setup(700, 700, 0, 0)
    turtle.speed("fastest")
    turtle.screensize(bg='black')
    turtle.left(90)
    turtle.forward(3 * n)
    turtle.color("orange", "yellow")
    turtle.begin_fill()
    turtle.left(126)
    for i in range(5):
        turtle.forward(n / 5)
        turtle.right(144)
        turtle.forward(n / 5)
        turtle.left(72)
    turtle.end_fill()
    turtle.right(126)
    turtle.color("dark green")
    turtle.backward(n * 4.8)
    def tree(d, s):
        if d <= 0: return
        turtle.forward(s)
        tree(d - 1, s * .8)
        turtle.right(120)
        tree(d - 3, s * .5)
        turtle.right(120)
        tree(d - 3, s * .5)
        turtle.right(120)
        turtle.backward(s)
    tree(15, n)
    turtle.backward(n / 2)
    for i in range(200):
        a = 200 - 400 * random.random()
        b = 10 - 20 * random.random()
        turtle.up()
        turtle.forward(b)
        turtle.left(90)
        turtle.forward(a)
        turtle.down()
        if random.randint(0, 1) == 0:
            turtle.color('tomato')
        else:
            turtle.color('wheat')
            turtle.circle(2)
            turtle.up()
            turtle.backward(a)
            turtle.right(90)
            turtle.backward(b)
    time.sleep(60)
    

    看一下效果:

    接着将圣诞树作为背景图添加雪落效果及音乐,主要用到的 Python 库为 pygame,主要代码实现如下:

    # 初始化 pygame
    pygame.init()
    #设置屏幕宽高,根据背景图调整
    bg_img = "bg.png"
    bg_size = (609, 601)
    screen = pygame.display.set_mode(bg_size)
    pygame.display.set_caption("雪夜圣诞树")
    bg = pygame.image.load(bg_img)
    # 雪花列表
    snow_list = []
    for i in range(150):
        x_site = random.randrange(0, bg_size[0])   # 雪花圆心位置
        y_site = random.randrange(0, bg_size[1])   # 雪花圆心位置
        X_shift = random.randint(-1, 1)         # x 轴偏移量
        radius = random.randint(4, 6)           # 半径和 y 周下降量
        snow_list.append([x_site, y_site, X_shift, radius])
    # 创建时钟对象
    clock = pygame.time.Clock()
    # 添加音乐
    track = pygame.mixer.music.load('my.mp3')  # 加载音乐文件
    pygame.mixer.music.play() # 播放音乐流
    pygame.mixer.music.fadeout(600000)  # 设置音乐结束时间
    done = False
    while not done:
        # 消息事件循环,判断退出
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
        screen.blit(bg, (0, 0))
        # 雪花列表循环
        for i in range(len(snow_list)):
            # 绘制雪花,颜色、位置、大小
            pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3] - 3)
            # 移动雪花位置(下一次循环起效)
            snow_list[i][0] += snow_list[i][2]
            snow_list[i][1] += snow_list[i][3]
            # 如果雪花落出屏幕,重设位置
            if snow_list[i][1] > bg_size[1]:
                snow_list[i][1] = random.randrange(-50, -10)
                snow_list[i][0] = random.randrange(0, bg_size[0])
        # 刷新屏幕
        pygame.display.flip()
        clock.tick(30)
    # 退出
    pygame.quit()
    

      

    看一下最终效果:

    这里就不放视频了,大家如果想听一下音乐效果可以自己获取源码执行一下。

     

    注意:如果你是打算找python高薪工作的话。我建议你多写点真实的企业项目积累经验。不然工作都找不到,当然很多人没进过企业,怎么会存在项目经验呢? 所以你得多找找企业项目实战多练习下撒。如果你很懒不想找,也可以进我的Python交流圈:1156465813。群文件里面有我之前在做开发写过的一些真实企业项目案例。你可以拿去学习,不懂都可以在裙里找我,有空会耐心给你解答下。

     

     


    以下内容无用,为本篇博客被搜索引擎抓取使用
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    python 是干什么的 零基础学 python 要多久 python 为什么叫爬虫
    python 爬虫菜鸟教程 python 爬虫万能代码 python 爬虫怎么挣钱
    python 基础教程 网络爬虫 python python 爬虫经典例子
    python 爬虫
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    以上内容无用,为本篇博客被搜索引擎抓取使用

  • 相关阅读:
    存储过程中的top+变量
    SQL Server中Table型数据(表变量)与用户自定义函数
    在IE中调用javascript打开Excel
    微软公司软件开发模式简介收集
    一个相当独立的.通用分页控件c#源码一(downmoon收集)
    导出GridView到Excel中的关键之处(downmoon)
    一个相当独立的.通用分页控件c#源码二(downmoon收集)
    三个很常用的存储过程
    前触发器和后触发器简介
    .net2.0中新增的Substitution控件动态更新缓存页的部分(也可用于局部刷新)
  • 原文地址:https://www.cnblogs.com/shuchongzeishuai/p/14187651.html
Copyright © 2011-2022 走看看