<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 實現(xiàn)帶音樂的雪花飄落雪景圖

          共 2511字,需瀏覽 6分鐘

           ·

          2020-12-04 17:51

          文 |?野客

          來源:Python 技術(shù)「ID: pythonall」

          這幾天很多地方陸續(xù)出現(xiàn)了降雪的天氣,對于年內(nèi)的第一場雪,大家的熱情顯然是比較高漲的,比如很多人頂著雪花到各種景點打卡,再比如一位東北大哥要直播賣雪送辣白菜給南方人。

          此事還上了微博熱搜,博主唐僧評論:“對賣家來說是買辣白菜送雪,對南方人來說是買雪送辣白菜”,網(wǎng)友 melodyming2 回復(fù):“圣僧我悟了”,大家如果有興趣的話,可以到網(wǎng)上看一下詳細(xì)報道,這里就不多說了。

          回到正題,本文我們使用 Python 來實現(xiàn)帶音樂的雪花飄落雪景圖,功能實現(xiàn)用到的 Python 庫為 pygame,之前已經(jīng)多次介紹了,相信大家應(yīng)該都比較熟悉了。

          實現(xiàn)

          雪景圖的實現(xiàn)還是比較簡單的,基本思路如下:

          • 找一張自己喜歡的圖片作為背景圖

          • 添加雪飛飄落效果

          • 添加音樂效果

          首先,我們來生成主窗口及設(shè)置背景圖,代碼實現(xiàn)如下:

          bg_img?=?"bg.jpeg"
          bg_size?=?(900,?500)
          screen?=?pygame.display.set_mode(bg_size)
          pygame.display.set_caption("雪景圖")
          bg?=?pygame.image.load(bg_img)

          窗口的寬、高根據(jù)背景的尺寸來設(shè)置。

          接著我們來實現(xiàn)雪花飄落效果,先來定義一個雪花列表,代碼實現(xiàn)如下:

          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])

          再來實現(xiàn)雪花位置更新,實現(xiàn)動態(tài)下雪的效果,代碼實現(xiàn)如下:

          for?i?in?range(len(snow_list)):
          ?#?繪制雪花,顏色、位置、大小
          ?pygame.draw.circle(screen,?(255,?255,?255),?snow_list[i][:2],?snow_list[i][3]?-?3)
          ?#?移動雪花位置(下一次循環(huán)起效)
          ?snow_list[i][0]?+=?snow_list[i][2]
          ?snow_list[i][1]?+=?snow_list[i][3]
          ?#?如果雪花落出屏幕,重設(shè)位置
          ?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])

          因為我們要實現(xiàn)的是雪花不斷飄落的效果,因此再來設(shè)置一個循環(huán)來不斷刷新屏幕,代碼實現(xiàn)如下:

          while?not?done:
          ????#?消息事件循環(huán),判斷退出
          ????for?event?in?pygame.event.get():
          ????????if?event.type?==?pygame.QUIT:
          ????????????done?=?True
          ????screen.blit(bg,?(0,?0))
          ????#?雪花列表循環(huán)
          ????for?i?in?range(len(snow_list)):
          ????????#?繪制雪花,顏色、位置、大小
          ????????pygame.draw.circle(screen,?(255,?255,?255),?snow_list[i][:2],?snow_list[i][3]?-?3)
          ????????#?移動雪花位置(下一次循環(huán)起效)
          ????????snow_list[i][0]?+=?snow_list[i][2]
          ????????snow_list[i][1]?+=?snow_list[i][3]
          ????????#?如果雪花落出屏幕,重設(shè)位置
          ????????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(20)

          最后,我們再來為雪景圖添加一段音樂效果,代碼實現(xiàn)如下:

          track?=?pygame.mixer.music.load('my.mp3')??#?加載音樂文件
          pygame.mixer.music.play()?#?播放音樂流
          pygame.mixer.music.fadeout(100000)??#?設(shè)置音樂結(jié)束時間

          到此我們就完成了雪景圖的繪制工作了,下面一起來欣賞一下 GIF 效果:

          大家如果想看(聽)帶音樂的雪景圖,可以自己運行程序感受一下,這里就不給大家錄視頻了。

          總結(jié)

          本文我們給大家介紹了用 Python 制作帶音樂的雪花飄落雪景圖的一種實現(xiàn)方式,大家如果感興趣的話,可以自己動手試一下。

          PS公號內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計劃!


          老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點一下,如果感覺文章內(nèi)容不錯的話,記得分享朋友圈讓更多的人知道!

          代碼獲取方式

          識別文末二維碼,回復(fù):1202

          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  3p性爱视频 | 男女日逼免费视频 | 噜噜噜久久久 | 精品久久久久不卡 | 亚洲AV综合色区无码国产播放 |