想不想用python來一場人工降雪!!

python人工降雪

本文參考了Ahab雜貨鋪微信公眾號,具體地址:https://mp.weixin.qq.com/s/fki-eGBzrSsz2xDbk--vpw

00.png

下面是我的源碼:

'''
人工降雪
Data:2018-12-09
Author:Lingyin
reference:https://mp.weixin.qq.com/s/fki-eGBzrSsz2xDbk--vpw


'''

import pygame
import random
import os
from pygame.locals import *
from pygame.compat import geterror

if not pygame.mixer: print('Warning, sound disabled')

SIZE = (1300,700)

main_dir = os.path.split(os.path.abspath(__file__))[0]
data_dir = os.path.join(main_dir, 'data')

#加載圖片,利用os模塊,實現(xiàn)跨平臺
def load_image(name):
    fullname = os.path.join(data_dir,name)

    try:
        image = pygame.image.load(fullname)
    except pygame.error as e:
        raise e
    image = image.convert()
    return image


def load_sound(name):
    class NoneSound:
        def play(self): pass
    if not pygame.mixer or not pygame.mixer.get_init():
        return NoneSound()
    fullname = os.path.join(data_dir, name)
    print(fullname)
    try:
        pygame.mixer.music.load(fullname)
        pygame.mixer.music.play()
    except pygame.error:
        print('Cannot load sound: %s' % fullname)
        raise SystemExit(str(geterror()))
    

def Snow():

    #定義一個雪花lsit
    snow_list = []

    for i in range(300):
        x = random.randrange(0,SIZE[0])
        y = random.randrange(0,SIZE[1])
        x_speed = random.randint(-1,2)
        y_speed = random.randint(3,8)
        snow_list.append([x,y,x_speed,y_speed])
    return snow_list


def main():


    #初始化
    pygame.init()

    screen = pygame.display.set_mode(SIZE)
    #設(shè)置標(biāo)題
    pygame.display.set_caption('唯美雪景')

    #設(shè)置鼠標(biāo)光標(biāo)不可見
    pygame.mouse.set_visible(0)

    #加載背景
    background = load_image('Lingyin0.jpg')

    screen.blit(background,(0,0))

    #顯示背景
    pygame.display.flip()

    clock = pygame.time.Clock()

    snow = Snow()
    
    load_sound('flower.mp3')

    #主循環(huán)
    going = True
    while going:

        clock.tick(20)
        for event in pygame.event.get():
            if event.type == QUIT:
                going = False
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                going = False

            
        for i in range(len(snow)):
            #繪制雪花
            pygame.draw.circle(screen,(255,255,255),snow[i][:2],snow[i][3])

            #移動雪花
            snow[i][0] += snow[i][2]
            snow[i][1] += snow[i][3]

            if snow[i][1] > SIZE[1]:
                snow[i][1] = random.randrange(-50,-10)
                snow[i][0] = random.randrange(0,SIZE[0])
        pygame.display.flip()   
        screen.blit(background, (0, 0))
                


    pygame.quit()



if __name__ == '__main__':
    main()

在Ahab原有的基礎(chǔ)上,我增加了兩個用來加載圖片和聲音的函數(shù),同時導(dǎo)入os模塊,實現(xiàn)跨平臺的應(yīng)用。具體的原理,我就不講了,想知道的話,可以去原作者的微信公眾號去看,再次貼一下地址

https://mp.weixin.qq.com/s/fki-eGBzrSsz2xDbk--vpw

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容