domingo, 20 de julio de 2014

Sonidos consecutibos con pygame.mixer.Channel()

"""
Script para alternar entre sonidos uno después
del otro sin sobreponerlos.
"""
import pygame
from pygame.locals import*
import pygame.mixer as Mixer
pygame.init()


class Sonido():
    def __init__(self):
        pygame.display.set_caption("Sonidos alternados")
        self.C_PANTALLA = pygame.display.set_mode((650,400))
        self.C_RELOJ = pygame.time.Clock()
        self.V_JuegoActivo = True
       
        #..Cargando sonidos..#
        self.C_Sonido01 = Mixer.Sound("Sonido_IngDG_01.wav")
        self.C_Sonido02 = Mixer.Sound("Sonido_IngDG_02.wav")
       
        #..Colores..#
        self.C_Blanco = (255,255,255)
       
        #..Variable de control..#
        self.V_NoSonido = 1
       
        #..Reservando Canal..#
        pygame.mixer.set_reserved(1)
        self.C_Canal01 = pygame.mixer.Channel(1)
       
    def J_Eventos(self):
        for Evento in pygame.event.get():
            if Evento.type == QUIT:
                self.V_JuegoActivo = False
            if Evento.type == KEYDOWN:
                if Evento.key == K_ESCAPE:
                    self.V_JuegoActivo = False
                   
    def J_Procesamiento(self):
        #..Verificando si el canal 1 esta ocupado..#
        if not self.C_Canal01.get_busy():
            #..Alternado entre sonidos..#
            if self.V_NoSonido == 1:
                self.V_NoSonido = 2
                self.C_Canal01.play(self.C_Sonido01)
            elif self.V_NoSonido == 2:
                self.V_NoSonido = 1
                self.C_Canal01.play(self.C_Sonido02)
       
    def J_Graficar(self):
        self.C_PANTALLA.fill(self.C_Blanco)
        pygame.display.flip()
       
    def Jugar(self):
        while(self.V_JuegoActivo):
            self.C_RELOJ.tick(16)
            self.J_Eventos()
            self.J_Procesamiento()
            self.J_Graficar()
        pygame.quit()   
       
Juego = Sonido()
Juego.Jugar()

No hay comentarios:

Publicar un comentario