pygame天空之城渐隐渐显虚像效果演示程序fade in fade out

"""pygame天空之城渐隐渐显虚像效果演示程序fade in fade out,本程序对一些图像进行一幅幅的淡入淡出显示。背景音乐为《天空之城》。
   需要pygame模块安装,如果没有安装,请在命令提示符里输入   pip install pygame --user
   程序中设计了一个Dream类,然后生成了一个“梦”,在“梦”中调用了相关函数实现梦的效果。
"""

__author__ = "李兴球"
__date__ = "2018/11/26"
__company__  = "风火轮少儿编程"

try:
    import pygame
except:
    print("没有安装pygame模块,请在安装Python3后,在命令提示符窗口输入: pip install pygame --user 进行安装。")
    
import os
import winsound
from pygame.locals import *

class Dream():
    def __init__(self,size):
         
        self.screen = pygame.display.set_mode(size)
        self.clock = pygame.time.Clock()
        self.end = False
        self.title("pygame淡入淡出_渐隐渐显效果_作者:李兴球_风火轮少儿编程")
        
    def title(self,title):
        pygame.display.set_caption(title)
        
    def playmusic(self,wavfile,loop = True):
        """播放背景音乐,loop为非零值表示重复播放,其它为播放一次"""
        try:
           if loop :
              winsound.PlaySound(wavfile,winsound.SND_ASYNC|winsound.SND_LOOP)  # 循环异步播放
           else:            
              winsound.PlaySound(wavfile,winsound.SND_ASYNC)                    # 异步播放一次
        except:
            pass        
        
    def quit(self):
        self.end = True
        try:
            pygame.quit()
        except:
            pass
    def fadeshow(self,imagefile,speed=1,time=1):
        """淡入淡出显示图像,参数说明:
           imagefile:图像文件
           speed:速度,1-255的值
           time:显示时间,秒为单位
           
        """
        if not os.path.exists(imagefile):return
        extname = os.path.splitext(imagefile)[-1]
        extname =  extname.lower()[1:]
        if not extname in ('jpg','jpeg','png','gif','bmp','pcx','tga','tif','lbm','pbm','pgm','ppm','xpm'):return
        speed = abs(speed)
        time = int(time)
        picture = pygame.image.load(imagefile)
        "淡入的代码段,通过设置透明度实现"
       for i in range(0,256,speed):             # 从0到255变化,0 是全透明,255是不透明.
            self.clock.tick(60)
            event = pygame.event.poll()          # 加这个不会有无响应
            if event.type == QUIT:self.quit();return
            picture.set_alpha(i)                 # 设置透明度
            self.screen.fill((0,0,0))            # 渲染screen为黑色
            self.screen.blit(picture,(0,0) )     # 在screen上画picture
            pygame.display.flip()                # 更新显示
        "这个for循环是等待一定的时间"
       

You must log in to read the rest of this article. Please log in or register as a user.