为了账号安全,请及时绑定邮箱和手机立即绑定

想不想用python来一场人工降雪!!

标签:
Python

python人工降雪


webp

00.png

下面是我的源码:

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


'''import pygameimport randomimport osfrom pygame.locals import *from pygame.compat import geterrorif 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模块,实现跨平台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 imagedef 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_listdef main():


    #初始化
    pygame.init()

    screen = pygame.display.set_mode(SIZE)    #设置标题
    pygame.display.set_caption('唯美雪景')    #设置鼠标光标不可见
    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')    #主循环
    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原有的基础上,我增加了两个用来加载图片和声音的函数,同时导入os模块,实现跨平台的应用。具体的原理,我就不讲了,想知道的话,可以去原作者的微信公众号去看,再次贴一下地址



作者:dmzlingyin
链接:https://www.jianshu.com/p/f3f59fbe07d2


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消