本篇我们使用Python绘制一棵带有音乐效果的雪夜圣诞树。基本思路如下:使用Python绘制一棵圣诞树作为背景图,并在圣诞树背景图上添加雪花下面我们来看一下飘落效果和音乐的具体实现。首先,我们来画一株圣诞树,主要用到的Python库为turtle,主要代码实现如下:n=80.0turtle.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)foriinrange(5):turtle.forward(n/5)turtle.right(144)turtle.forward(n/5)turtle.left(72)turtle.end_fill()turtle.right(126)turtle.color("深绿色")turtle.backward(n*4.8)deftree(d,s):如果d<=0:返回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我在范围(200)中:a=200-400*random.random()b=10-20*random.random()turtle.up()turtle.forward(b)turtle.left(90)turtle.forward(a)turtle.down()如果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,主要代码实现如下:#初始化pygamepygame.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)#snowlistsnow_list=[]foriinrange(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)#radiusandy-weekdropsnow_list.append([x_site,y_site,X_shift,radius])#创建时钟对象clock=pygame.time.Clock()#添加音乐曲目=pygame.mixer.music.load('my.mp3')#加载音乐文件pygame.mixer.music.play()#播放音乐流pygame.mixer.music.fadeout(600000)#设置音乐结束时间done=Falsewhilenotdone:#消息事件循环,pygame.event.get()中的事件判断退出:ifevent.type==pygame.QUIT:done=Truescreen.blit(bg,(0,0))#雪花列表循环foriinrange(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]#如果雪从屏幕上掉下来,重置位置ifsnow_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)#exitpygame.quit()看最终效果:这里不播放视频,如果想听音乐效果,可以自己执行源码和对应的文件,通过在公众号Python小二后台回复201225。
