Esempio n. 1
0
class Jogo(object):
    # Definição dos estados do jogo
    ABERTURA = 0
    MENU     = 1
    FASE_1   = 2
    FASE_2   = 3
    
    def __init__(self, tamanho_tela = TAMANHO_TELA, fps = FPS):
        pygame.init()
        
        self.tamanho_tela = tamanho_tela
        self.fps          = fps
        self.screen       = pygame.display.set_mode(self.tamanho_tela)
        self.clock        = pygame.time.Clock()
        self.rodando      = True
        
        self.irParaTela(Jogo.ABERTURA)
        
    def irParaTela(self, tela):
        if hasattr(self, 'estadoAtual'):
            self.estadoAnterior = self.estadoAtual
            self.telaAnterior   = self.telaAtual
        
        self.estadoAtual = tela
        
        if tela == Jogo.ABERTURA:
            from abertura import Abertura
            self.telaAtual = Abertura(self)
        elif tela == Jogo.MENU:
            from menu import Menu
            self.telaAtual = Menu(self)
        elif tela == Jogo.FASE_1:
            from fase_1 import Fase1
            self.telaAtual = Fase1(self)
        elif tela == Jogo.FASE_2:
            from fase_2 import Fase2
            self.telaAtual = Fase2(self)
            
        self.exibe_transicao()
        
    def exibe_transicao(self):
        from transicoes import blinds
        blinds(pygame.surfarray.array2d(self.screen), self.tamanho_tela, self.screen, 6)
            
    def voltar(self, dx = 0, dy = 0):
        self.estadoAtual = self.estadoAnterior
        self.telaAtual   =  self.telaAnterior
        
        delattr(self, 'estadoAnterior')
        delattr(self, 'telaAnterior')
        
        self.telaAtual.jogador.posicao[0] += dx
        self.telaAtual.jogador.posicao[1] += dy
            
    def sair(self):
        self.rodando = False

    def main(self):
        while self.rodando:
            self.clock.tick(self.fps)

            eventos = pygame.event.get()

            for event in eventos:
                if event.type == QUIT:
                    self.rodando = False

            self.telaAtual.processa(eventos)
            
            pygame.display.flip()