漫天飞雪效果动画_pygame淡入淡出_scratch转python

漫天飞雪效果动画_pygame淡入淡出动态背景class类与播放背景音乐

以下是部分代码预览:

"""本程序描述了一幅满天飞雪的动画场景,动态背景之雪山下雪神秘音乐,这是把一个scratch作品用python表现出来的作品."""

import time
import pygame
from pygame.locals import *
from random import randint

class Snow(pygame.sprite.Sprite):
    
    def __init__(self,screen_size):
        
        self.sw,self.sh = screen_size
        pygame.sprite.Sprite.__init__(self)
        self.radius = randint(1,8)
        self.image = pygame.Surface((2*self.radius,2*self.radius))
        self.image.set_colorkey((0,0,0))
        
    def update(self):
        """往下移动雪花"""
        self.rect.move_ip(0,self.yspeed)
        if  self.rect.top > self.sh:self.reset()

    def reset(self):
        """ 设定位置"""
        self.rect.centerx = randint(0,self.sw)
        self.rect.bottom = randint(-2* self.sh,10)        
        

class Fade_background :
    """淡入淡出动态背景类,把一系列帧图像做为背景不断地渐隐渐现的显示"""
    
    def __init__(self,images,size):
        """images:已转换成surface的对象列表,size:屏幕尺寸"""        
        
        self.screen_size = size
        self.images = images                   # images是surface列表

    def update(self):
        """淡入淡出地显示图像,然后换一幅图像"""


    def set_shape(self,index):
        """设置初始造型和透明度为0"""

    def set_alpha(self):
        """设置透明度"""
        self.step = self.step % 50
        self.alpha = 10 * (25-abs(25-self.step)) # 自定义属性,0代表完全透明,255,代表透明
             

def main():
    """主要的调用函数"""

    title = "漫天飞雪效果动画_pygame淡入淡出动态背景class类与播放背景音乐,作者:李兴球"
    
    width,height = 960,720
    pygame.init()
    screen = pygame.display.set_mode((width,height))
    pygame.display.set_caption(title)
    
    images = ["bgs/No trees night.png","bgs/No trees.png","bgs/Trees night.png","bgs/Trees.png"]
    images = [pygame.image.load(image).convert()  for image in images]

    background = pygame.image.load("bgs/backdrop1.png")
    bgs = Fade_background(images,(width,height))

    # 播放背景音乐
    pygame.mixer.init()
    pygame.mixer.music.load("bgs/The Snow Queen.wav")
    pygame.mixer.music.play(-1,0)

    snows = pygame.sprite.Group()
    for i in range(500):
        snows.add(Snow((width,height)))    
    
    clock = pygame.time.Clock()
    running = True
    while running :
        event = pygame.event.poll()
        if event.type == QUIT:running = False
        bgs.update()
        snows.update()
        pygame.display.flip()
        clock.tick(60)

    pygame.quit()
       
if __name__ == "__main__":

    main()        

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在pygame, python分类目录。将固定链接加入收藏夹。