def __init__(self):
     self.telamenu = TelaMenu()
     self.aplcadastrarjogador = AplCadastrarJogador()
     self.lopcoes = ["LOGIN:"******"SENHA:"]
     self.nomecorrente = []
     self.nome = ""
     self.posicaoimprimenome = self.POSICAO_INICIAL_DADOS
Exemplo n.º 2
0
 def __init__(self):
     self.apljogo = AplJogo()
     self.telajogo = Tela()
     self.aplcadastrarjogador = AplCadastrarJogador()
     self.fabricaimagens = FlyweightFabrica()
     self.imagempersonagem = self.get_imagem("personagem.png")
     self.posicaotela = EstiloElementos.posicao_imagem_fundo()
     self.fundojogo = "fundojogo2.png"
     self.music = False
     self.continuarjogo = True
Exemplo n.º 3
0
 def __init__(self):
     self.telamenu = TelaMenu()
     self.aplcadastrarjogador = AplCadastrarJogador()
     self.lopcoes = ["LOGIN:"******"SENHA:"]
     self.nomecorrente = []
     self.nome = ""
     self.posicaoimprimenome = 270
class ControladorRanking:
    TAMFONTETEXTO = 35
    POSICAOXNOME = 105
    POSICAOXPONTUACAO = 480
    ESPACAMENTONOMES = 43
    POSICAOYLINHA = 188

    def __init__(self):
        self.telamenu = TelaMenu()
        self.aplcadjog = AplCadastrarJogador()

    @staticmethod
    def get_imagem(nomeimagem):
        return pygame.image.load(os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem))

    def exibir_tela_ranking(self):
        imagem = self.get_imagem("telaranking.png")
        self.telamenu.exibe_imagem(imagem, EstiloElementos.posicao_imagem_fundo())

    def imprimir_ranking(self, lrecordes):
        posicaoylinha = self.POSICAOYLINHA
        for linha in lrecordes:
            self.telamenu.exibe_texto(str(linha[0]), self.TAMFONTETEXTO, Posicao(self.POSICAOXNOME, posicaoylinha))
            self.telamenu.exibe_texto(str(linha[1]), self.TAMFONTETEXTO, Posicao(self.POSICAOXPONTUACAO, posicaoylinha))
            posicaoylinha += self.ESPACAMENTONOMES

    def retorna_ranking(self):
        self.exibir_tela_ranking()
        lrecordes = self.aplcadjog.buscar_ranking()
        self.imprimir_ranking(lrecordes)
        pygame.display.flip()
Exemplo n.º 5
0
 def __init__(self):
     self.apljogo = AplJogo()
     self.telajogo = Tela()
     self.aplcadastrarjogador = AplCadastrarJogador()
     self.fabricaimagens = FlyweightFabrica()
     self.imagempersonagem = self.get_imagem("personagem.png")
     self.posicaotela = EstiloElementos.posicao_imagem_fundo()
     self.fundojogo = "fundojogo2.png"
     self.music = False
     self.continuarjogo = True
Exemplo n.º 6
0
class ControladorLogin(ControladorCadastro):

    def __init__(self):
        self.telamenu = TelaMenu()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.lopcoes = ["LOGIN:"******"SENHA:"]
        self.nomecorrente = []
        self.nome = ""
        self.posicaoimprimenome = 270

    def enviar_dados_jogador(self, ldadosjogador):
        if self.aplcadastrarjogador.validar_login(ldadosjogador):
            return True
        else:
            return False
Exemplo n.º 7
0
class ControladorJogo:
    TAM_FONTE_TEXTO = 35
    TAM_FONTE_NUMERO = 40
    TAMANHOFONTEGAMEOVER = 40
    DESLOCAMENTO_TELA = 5
    POSICAO_TROCA_TELA = -500
    INTERVALOMOEDAS = 70
    INTERVALOESQUELETOS = 234
    VELOCIDADEBONUS = 11

    def __init__(self):
        self.apljogo = AplJogo()
        self.telajogo = Tela()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.fabricaimagens = FlyweightFabrica()
        self.imagempersonagem = self.get_imagem("personagem.png")
        self.posicaotela = EstiloElementos.posicao_imagem_fundo()
        self.fundojogo = "fundojogo2.png"
        self.music = False
        self.continuarjogo = True

    @staticmethod
    def get_obstaculo(nomeobstaculo):
        return pygame.image.load(os.path.join(CaminhoRecursos.caminho_imagens_obstaculos(), nomeobstaculo))

    @staticmethod
    def get_imagem(nomeimagem):
        return pygame.image.load(os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem))

    @staticmethod
    def get_musica(nomemusica):
        return os.path.join(CaminhoRecursos.caminho_musicas(), nomemusica)

    @staticmethod
    def get_som(nomesom):
        return os.path.join(CaminhoRecursos.caminho_sons(), nomesom)

    def exibir_tela_jogo(self):
        imagem = self.get_imagem(self.fundojogo)
        self.telajogo.exibe_imagem(imagem, self.posicaotela)
        self.anda_tela()

    def anda_tela(self):
        self.posicaotela.eixox -= self.DESLOCAMENTO_TELA
        if self.posicaotela.eixox == self.POSICAO_TROCA_TELA:
            self.posicaotela.eixox = 0

    def exibir_vidas(self):
        for numvida in range(self.apljogo.personagem.vida):
            imagem = self.get_imagem("vida.png")
            self.telajogo.exibe_texto("Vida", self.TAM_FONTE_TEXTO, EstiloElementos.posicao_texto_vida())
            self.telajogo.exibe_imagem(imagem, EstiloElementos.get_posicao_vida(numvida))

    def exibir_pontuacao(self):
        self.telajogo.exibe_texto(str(self.apljogo.pontos), self.TAM_FONTE_NUMERO, EstiloElementos.posicao_numero_pontuacao() )
        self.telajogo.exibe_texto("Pontuação", self.TAM_FONTE_TEXTO, EstiloElementos.posicao_texto_pontuacao())

    def exibir_pontuacao_moedas(self):
        self.fabricaimagens.get_flyweight("moeda").desenhar_imagem(EstiloElementos.posicao_desenho_moeda())
        self.telajogo.exibe_texto("Bônus", self.TAM_FONTE_TEXTO, EstiloElementos.posicao_texto_bonus())
        self.telajogo.exibe_texto(str(self.apljogo.qtdmoedas)+" / "+str(self.apljogo.valor_alcance_bonus), self.TAM_FONTE_NUMERO, EstiloElementos.posicao_numero_bonus())

    def exibir_fim_de_jogo(self):
        self.posicaotela.eixox = 0
        imagem = self.get_imagem("gameover.png")
        self.telajogo.exibe_imagem(imagem, EstiloElementos.posicao_imagem_fundo())
        self.telajogo.exibe_texto("Parabéns! Você fez %s pontos"%str(self.apljogo.pontos), self.TAMANHOFONTEGAMEOVER, EstiloElementos.posicao_mensagem_gameover())
        pygame.display.flip()


    def exibir_musica(self, musica):
        self.telajogo.exibe_musica(CaminhoRecursos.caminho_musicas(), musica)

    # exibe moedas e esqueletos na tela
    def exibir_bonus(self, lista, intervalo):
        self.auxbonusanterior = lista[0].posicaox - (intervalo + 1)
        for bonus in lista:
            if ((bonus.posicaox - self.auxbonusanterior) > intervalo) or ((bonus.posicaox - self.auxbonusanterior) < 0):
                bonus.decrementa_posicao_x(self.VELOCIDADEBONUS)
                if bonus.ehtangivel:
                    self.fabricaimagens.get_flyweight(bonus.nome).desenhar_imagem(bonus.define_posicao())
            else:
                break
            self.auxbonusanterior = bonus.posicaox
            if bonus.posicaox <= 0:
                bonus.restaura_posicao()

    def constroi_jogo_evolucao(self):
        self.fabricaimagens.get_flyweight("peixemoto").desenhar_imagem(self.apljogo.personagem.posicao)
        self.exibir_bonus(self.lesqueletos, self.INTERVALOESQUELETOS)
        if not self.music:
            self.music = True
            self.exibir_musica(self.apljogo.personagem.musicaatual)
        self.verifica_colisao_bonus(self.lesqueletos)
        self.fundojogo = "fundojogonegro2.png"

    def constroi_jogo_original(self):
        self.fabricaimagens.get_flyweight("personagem").desenhar_imagem(self.apljogo.personagem.posicao)
        self.exibir_bonus(self.lmoedas, self.INTERVALOMOEDAS)
        self.verifica_colisao_bonus(self.lmoedas)
        self.fundojogo = "fundojogo2.png"

    def exibir_personagem(self):
        if self.apljogo.personagem.estado == EstadoPersonagem.normal:
            self.constroi_jogo_original()
        else:
            self.constroi_jogo_evolucao()

    def atualiza_tela(self):
        self.exibir_tela_jogo()
        self.exibir_personagem()
        for obstaculo in self.apljogo.lobstaculos:
            self.fabricaimagens.get_flyweight(obstaculo.nome).desenhar_imagem(obstaculo.posicao)
        self.exibir_pontuacao()
        self.exibir_vidas()
        self.exibir_pontuacao_moedas()

    # o jogo volta ao estado original (sem motoqueiro)
    def restaura_estado_jogo(self):
        self.apljogo.personagemmemento.restaura_estado()
        self.music = False
        self.exibir_musica(self.apljogo.personagem.musicaatual)

    # verifica se o personagem colidiu com algum obstaculo marinho
    def verifica_colisao_obstaculo(self):
        for obstaculo in self.apljogo.lobstaculos:
            imagemobstaculo = self.get_obstaculo(obstaculo.nome + ".png")
            if self.apljogo.testa_colisao_personagem_obstaculo(self.imagempersonagem, imagemobstaculo, obstaculo):
                self.telajogo.exibe_som(self.get_som(obstaculo.somcolisao))
                if self.apljogo.personagem.estado == EstadoPersonagem.normal:
                    self.apljogo.penaliza_jogador()
                else:
                    self.restaura_estado_jogo()
                    self.restaura_posicao_esqueletos()

    def colidiu_esqueleto(self, objeto):
        self.telajogo.exibe_som(self.get_som(objeto.somcolisao))
        self.restaura_estado_jogo()
        self.restaura_posicao_esqueletos()

    def capturou_moeda(self, objeto):
        self.telajogo.exibe_som(self.get_som(objeto.somcolisao))
        self.apljogo.qtdmoedas += 1

    # verifica se houve colisao do personagem com uma moeda ou um esqueleto
    def verifica_colisao_bonus(self, lista):
        for objeto in lista:
            imagem = self.get_imagem(objeto.imagem)
            if self.apljogo.testa_colisao_personagem_bonus(self.imagempersonagem, imagem, objeto):
                if objeto.nome == "moeda":
                    self.capturou_moeda(objeto)
                else:
                    self.colidiu_esqueleto(objeto)
                    break

    # inicializa a posicao de todos os esqueletos
    def restaura_posicao_esqueletos(self):
        for esqueleto in self.lesqueletos:
            esqueleto.restaura_posicao()

    # a classe ControlodorJogo (q eh um observador)recebe atualização pq a classe Observada ObservableEventosTeclado capturou um evento
    def update(self, observable):
        if observable.cima:
            self.apljogo.personagem.diminui_deslocamento()
        elif observable.soltoubaixo:
            self.apljogo.personagem.aumenta_deslocamento()
        elif (observable.enter) and (self.apljogo.fimdejogo):
            self.continuarjogo = False

    def inicializa_observable(self):
        observable = ObservableEventosTeclado()
        observable.add_observer(self)
        return observable

    def jogo(self, jogador):
        observable = self.inicializa_observable()
        self.exibir_musica(self.apljogo.personagem.musicaatual)
        self.apljogo.configuracao()
        self.lmoedas = self.apljogo.cria_bloco_bonus(11, "moeda")
        self.lesqueletos = self.apljogo.cria_bloco_bonus(3, "esqueleto")
        continua = True
        while continua:
            observable.verifica_evento()
            self.apljogo.jogar()
            self.atualiza_tela()
            self.verifica_colisao_obstaculo()
            if self.apljogo.fimdejogo:
                for moeda in self.lmoedas:
                    moeda.ehtangivel = False
                self.aplcadastrarjogador.cadastrar_pontuacao(jogador, self.apljogo.pontos)
                self.exibir_fim_de_jogo()
                continua = self.continuarjogo
        music.stop()
class ControladorCadastro:
    TAMANHO_LETRA_DADOS = 24
    POSICAOX_LETRA_DADOS = 225
    POSICAO_INICIAL_DADOS = 270
    INCREMENTA_ESPACAMENTO = 40
    TAMANHO_PALAVRA = 20

    def __init__(self):
        self.telamenu = TelaMenu()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.lopcoes = ["LOGIN:"******"SENHA:"]
        self.nomecorrente = []
        self.nome = ""
        self.posicaoimprimenome = self.POSICAO_INICIAL_DADOS

    @staticmethod
    def get_imagem(nomeimagem):
        return pygame.image.load(os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem))

    def exibe_tela_informar_dados(self):
        imagem = self.get_imagem("teladigitadados.png")
        self.telamenu.exibe_imagem(imagem, EstiloElementos.posicao_imagem_fundo())
        pygame.display.flip()

    def exibe_tela_mensagem_cadastro(self, mensagem):
        imagemtelamensagem = self.get_imagem("telamensagem.png")
        self.telamenu.exibe_imagem(imagemtelamensagem, EstiloElementos.posicao_imagem_fundo())
        self.telamenu.exibe_mensagem_cadastro(mensagem, EstiloElementos.posicao_mensagem_cadastro())
        pygame.display.flip()

    @staticmethod
    def get_key():
        while True:
            event = pygame.event.poll()
            if event.type == KEYDOWN:
                return event.key

    def imprime_nome(self, dado, posicaoy):
        self.nome = ""
        for i in range(len(dado)):
            self.nome = self.nome + dado[i]
        self.telamenu.exibe_texto_dados(self.nome, self.TAMANHO_LETRA_DADOS, Posicao(self.POSICAOX_LETRA_DADOS, posicaoy))
        pygame.display.flip()

    def enviar_dados_jogador(self, ldadosjogador):
        return self.aplcadastrarjogador.cadastrar_jogador(ldadosjogador)

    def atualiza_entrada(self, ldadosjogador):
        self.exibe_tela_informar_dados()
        posicaoy = self.POSICAO_INICIAL_DADOS
        for dado in ldadosjogador:
            self.imprime_nome(dado, posicaoy)
            posicaoy += self.INCREMENTA_ESPACAMENTO

    def cadastro(self):
        ldadosjogador = []
        while True:
            self.tecla = self.get_key()
            if self.tecla == K_RETURN or self.tecla == K_TAB:
                ldadosjogador.append(self.nome)
                self.nome = ""
                self.nomecorrente = []
                if len(ldadosjogador) == len(self.lopcoes):
                    self.posicaoimprimenome = self.POSICAO_INICIAL_DADOS
                    return self.enviar_dados_jogador(ldadosjogador)
                else:
                    self.posicaoimprimenome = self.posicaoimprimenome + self.INCREMENTA_ESPACAMENTO
            elif self.tecla == K_BACKSPACE:
                if len(self.nomecorrente) > 0:
                    self.nomecorrente.pop(-1)
                    ldadosjogador.append(self.nomecorrente)
                    self.atualiza_entrada(ldadosjogador)
                    ldadosjogador.pop(-1)
            elif self.tecla == K_ESCAPE:
                return []
            elif self.tecla <= 127 and len(self.nomecorrente) < self.TAMANHO_PALAVRA:
                self.nomecorrente.append(chr(self.tecla))
                self.imprime_nome(self.nomecorrente, self.posicaoimprimenome)
 def __init__(self):
     self.telamenu = TelaMenu()
     self.aplcadjog = AplCadastrarJogador()
Exemplo n.º 10
0
class ControladorJogo:
    TAM_FONTE_TEXTO = 35
    TAM_FONTE_NUMERO = 40
    TAMANHOFONTEGAMEOVER = 40
    DESLOCAMENTO_TELA = 5
    POSICAO_TROCA_TELA = -500
    INTERVALOMOEDAS = 70
    INTERVALOESQUELETOS = 234
    VELOCIDADEBONUS = 11

    def __init__(self):
        self.apljogo = AplJogo()
        self.telajogo = Tela()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.fabricaimagens = FlyweightFabrica()
        self.imagempersonagem = self.get_imagem("personagem.png")
        self.posicaotela = EstiloElementos.posicao_imagem_fundo()
        self.fundojogo = "fundojogo2.png"
        self.music = False
        self.continuarjogo = True

    @staticmethod
    def get_obstaculo(nomeobstaculo):
        return pygame.image.load(
            os.path.join(CaminhoRecursos.caminho_imagens_obstaculos(),
                         nomeobstaculo))

    @staticmethod
    def get_imagem(nomeimagem):
        return pygame.image.load(
            os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem))

    @staticmethod
    def get_musica(nomemusica):
        return os.path.join(CaminhoRecursos.caminho_musicas(), nomemusica)

    @staticmethod
    def get_som(nomesom):
        return os.path.join(CaminhoRecursos.caminho_sons(), nomesom)

    def exibir_tela_jogo(self):
        imagem = self.get_imagem(self.fundojogo)
        self.telajogo.exibe_imagem(imagem, self.posicaotela)
        self.anda_tela()

    def anda_tela(self):
        self.posicaotela.eixox -= self.DESLOCAMENTO_TELA
        if self.posicaotela.eixox == self.POSICAO_TROCA_TELA:
            self.posicaotela.eixox = 0

    def exibir_vidas(self):
        for numvida in range(self.apljogo.personagem.vida):
            imagem = self.get_imagem("vida.png")
            self.telajogo.exibe_texto("Vida", self.TAM_FONTE_TEXTO,
                                      EstiloElementos.posicao_texto_vida())
            self.telajogo.exibe_imagem(
                imagem, EstiloElementos.get_posicao_vida(numvida))

    def exibir_pontuacao(self):
        self.telajogo.exibe_texto(str(self.apljogo.pontos),
                                  self.TAM_FONTE_NUMERO,
                                  EstiloElementos.posicao_numero_pontuacao())
        self.telajogo.exibe_texto("Pontuação", self.TAM_FONTE_TEXTO,
                                  EstiloElementos.posicao_texto_pontuacao())

    def exibir_pontuacao_moedas(self):
        self.fabricaimagens.get_flyweight("moeda").desenhar_imagem(
            EstiloElementos.posicao_desenho_moeda())
        self.telajogo.exibe_texto("Bônus", self.TAM_FONTE_TEXTO,
                                  EstiloElementos.posicao_texto_bonus())
        self.telajogo.exibe_texto(
            str(self.apljogo.qtdmoedas) + " / " +
            str(self.apljogo.valor_alcance_bonus), self.TAM_FONTE_NUMERO,
            EstiloElementos.posicao_numero_bonus())

    def exibir_fim_de_jogo(self):
        self.posicaotela.eixox = 0
        imagem = self.get_imagem("gameover.png")
        self.telajogo.exibe_imagem(imagem,
                                   EstiloElementos.posicao_imagem_fundo())
        self.telajogo.exibe_texto(
            "Parabéns! Você fez %s pontos" % str(self.apljogo.pontos),
            self.TAMANHOFONTEGAMEOVER,
            EstiloElementos.posicao_mensagem_gameover())
        pygame.display.flip()

    def exibir_musica(self, musica):
        self.telajogo.exibe_musica(CaminhoRecursos.caminho_musicas(), musica)

    # exibe moedas e esqueletos na tela
    def exibir_bonus(self, lista, intervalo):
        self.auxbonusanterior = lista[0].posicaox - (intervalo + 1)
        for bonus in lista:
            if ((bonus.posicaox - self.auxbonusanterior) > intervalo) or (
                (bonus.posicaox - self.auxbonusanterior) < 0):
                bonus.decrementa_posicao_x(self.VELOCIDADEBONUS)
                if bonus.ehtangivel:
                    self.fabricaimagens.get_flyweight(
                        bonus.nome).desenhar_imagem(bonus.define_posicao())
            else:
                break
            self.auxbonusanterior = bonus.posicaox
            if bonus.posicaox <= 0:
                bonus.restaura_posicao()

    def constroi_jogo_evolucao(self):
        self.fabricaimagens.get_flyweight("peixemoto").desenhar_imagem(
            self.apljogo.personagem.posicao)
        self.exibir_bonus(self.lesqueletos, self.INTERVALOESQUELETOS)
        if not self.music:
            self.music = True
            self.exibir_musica(self.apljogo.personagem.musicaatual)
        self.verifica_colisao_bonus(self.lesqueletos)
        self.fundojogo = "fundojogonegro2.png"

    def constroi_jogo_original(self):
        self.fabricaimagens.get_flyweight("personagem").desenhar_imagem(
            self.apljogo.personagem.posicao)
        self.exibir_bonus(self.lmoedas, self.INTERVALOMOEDAS)
        self.verifica_colisao_bonus(self.lmoedas)
        self.fundojogo = "fundojogo2.png"

    def exibir_personagem(self):
        if self.apljogo.personagem.estado == EstadoPersonagem.normal:
            self.constroi_jogo_original()
        else:
            self.constroi_jogo_evolucao()

    def atualiza_tela(self):
        self.exibir_tela_jogo()
        self.exibir_personagem()
        for obstaculo in self.apljogo.lobstaculos:
            self.fabricaimagens.get_flyweight(obstaculo.nome).desenhar_imagem(
                obstaculo.posicao)
        self.exibir_pontuacao()
        self.exibir_vidas()
        self.exibir_pontuacao_moedas()

    # o jogo volta ao estado original (sem motoqueiro)
    def restaura_estado_jogo(self):
        self.apljogo.personagemmemento.restaura_estado()
        self.music = False
        self.exibir_musica(self.apljogo.personagem.musicaatual)

    # verifica se o personagem colidiu com algum obstaculo marinho
    def verifica_colisao_obstaculo(self):
        for obstaculo in self.apljogo.lobstaculos:
            imagemobstaculo = self.get_obstaculo(obstaculo.nome + ".png")
            if self.apljogo.testa_colisao_personagem_obstaculo(
                    self.imagempersonagem, imagemobstaculo, obstaculo):
                self.telajogo.exibe_som(self.get_som(obstaculo.somcolisao))
                if self.apljogo.personagem.estado == EstadoPersonagem.normal:
                    self.apljogo.penaliza_jogador()
                else:
                    self.restaura_estado_jogo()
                    self.restaura_posicao_esqueletos()

    def colidiu_esqueleto(self, objeto):
        self.telajogo.exibe_som(self.get_som(objeto.somcolisao))
        self.restaura_estado_jogo()
        self.restaura_posicao_esqueletos()

    def capturou_moeda(self, objeto):
        self.telajogo.exibe_som(self.get_som(objeto.somcolisao))
        self.apljogo.qtdmoedas += 1

    # verifica se houve colisao do personagem com uma moeda ou um esqueleto
    def verifica_colisao_bonus(self, lista):
        for objeto in lista:
            imagem = self.get_imagem(objeto.imagem)
            if self.apljogo.testa_colisao_personagem_bonus(
                    self.imagempersonagem, imagem, objeto):
                if objeto.nome == "moeda":
                    self.capturou_moeda(objeto)
                else:
                    self.colidiu_esqueleto(objeto)
                    break

    # inicializa a posicao de todos os esqueletos
    def restaura_posicao_esqueletos(self):
        for esqueleto in self.lesqueletos:
            esqueleto.restaura_posicao()

    # a classe ControlodorJogo (q eh um observador)recebe atualização pq a classe Observada ObservableEventosTeclado capturou um evento
    def update(self, observable):
        if observable.cima:
            self.apljogo.personagem.diminui_deslocamento()
        elif observable.soltoubaixo:
            self.apljogo.personagem.aumenta_deslocamento()
        elif (observable.enter) and (self.apljogo.fimdejogo):
            self.continuarjogo = False

    def inicializa_observable(self):
        observable = ObservableEventosTeclado()
        observable.add_observer(self)
        return observable

    def jogo(self, jogador):
        observable = self.inicializa_observable()
        self.exibir_musica(self.apljogo.personagem.musicaatual)
        self.apljogo.configuracao()
        self.lmoedas = self.apljogo.cria_bloco_bonus(11, "moeda")
        self.lesqueletos = self.apljogo.cria_bloco_bonus(3, "esqueleto")
        continua = True
        while continua:
            observable.verifica_evento()
            self.apljogo.jogar()
            self.atualiza_tela()
            self.verifica_colisao_obstaculo()
            if self.apljogo.fimdejogo:
                for moeda in self.lmoedas:
                    moeda.ehtangivel = False
                self.aplcadastrarjogador.cadastrar_pontuacao(
                    jogador, self.apljogo.pontos)
                self.exibir_fim_de_jogo()
                continua = self.continuarjogo
        music.stop()
Exemplo n.º 11
0
class ControladorCadastro:

    def __init__(self):
        self.telamenu = TelaMenu()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.lopcoes = ["LOGIN:"******"SENHA:"]
        self.nomecorrente = []
        self.nome = ""
        self.posicaoimprimenome = 270

    def exibe_tela_informar_dados(self):
        alteraposicao = 0
        for id, opcao in enumerate(self.lopcoes):
            self.telamenu.exibe_texto_menu(opcao, 40, (0,0,0), Posicao(105, 25 + alteraposicao))
            pygame.draw.rect(self.telamenu.tela, (255, 255, 255), (220, 270 + alteraposicao, 300, 30), 0)
            alteraposicao = alteraposicao + 40

        self.telamenu.exibe_texto_menu("CONFIRMAR", 40, (0,0,0),Posicao(302, 120))
        pygame.display.flip()

    @staticmethod
    def get_key():
        while 1:
            event = pygame.event.poll()
            if event.type == KEYDOWN:
                return event.key

    def imprime_nome(self):
        tela = self.telamenu.tela
        self.nome = ""
        for i in range(len(self.nomecorrente)):
            self.nome = self.nome + self.nomecorrente[i]

        fonte = pygame.font.SysFont("ARIAL", 24, False, False)
        texto = fonte.render(self.nome, True, (0, 0, 0))
        tela.blit(texto, (225, self.posicaoimprimenome))
        pygame.display.flip()


    def enviar_dados_jogador(self, ldadosjogador):
        if self.aplcadastrarjogador.cadastrar_jogador(ldadosjogador):
            return True
        else:
            return False

    def cadastro(self):
        ldadosjogador = []
        while True:
            tecla = self.get_key()
            if tecla == K_RETURN:
                ldadosjogador.append(self.nome)
                self.nome = ""
                self.nomecorrente = []
                if len(ldadosjogador) == len(self.lopcoes):
                    self.posicaoimprimenome = 270
                    if self.enviar_dados_jogador(ldadosjogador):
                        return True
                    else:
                        return False
                else:
                    self.posicaoimprimenome = self.posicaoimprimenome + 40
            elif tecla <= 127:
                self.nomecorrente.append(chr(tecla))
                self.imprime_nome()
Exemplo n.º 12
0
class TelaCadastro:
    POSICAO_SUBMIT = Posicao(302, 120)
    COR_PRETO = (0, 0, 0)
    COR_BRANCO = (255, 255, 255)
    TAMANHO_LETRA_MENU = 40
    TAMANHO_LETRA_DADOS = 24
    POSICAOX_LETRA_DADOS = 225
    POSICAO_INICIAL_DADOS = 270
    POSICAOX_OPCAO_MENU = 105
    POSICAOY_INICIAL_OPCAO_MENU = 25
    INCREMENTA_ESPACAMENTO = 40

    def __init__(self):
        self.telamenu = TelaMenu()
        self.aplcadastrarjogador = AplCadastrarJogador()
        self.lopcoes = ["LOGIN:"******"SENHA:"]
        self.nomecorrente = []
        self.nome = ""
        self.posicaoimprimenome = self.POSICAO_INICIAL_DADOS

    def exibe_tela_informar_dados(self):
        espacamentovertical = 0
        for id, opcao in enumerate(self.lopcoes):
            self.telamenu.exibe_texto_menu(opcao, self.TAMANHO_LETRA_MENU, self.COR_PRETO,
                                           Posicao(self.POSICAOX_OPCAO_MENU,
                                                   self.POSICAOY_INICIAL_OPCAO_MENU + espacamentovertical))
            pygame.draw.rect(self.telamenu.tela, self.COR_BRANCO, (220, 270 + espacamentovertical, 300, 30), 0)
            espacamentovertical = espacamentovertical + self.INCREMENTA_ESPACAMENTO

        self.telamenu.exibe_texto_menu("CONFIRMAR", self.TAMANHO_LETRA_MENU, self.COR_PRETO, self.POSICAO_SUBMIT)
        pygame.display.flip()

    @staticmethod
    def get_key():
        while 1:
            event = pygame.event.poll()
            if event.type == KEYDOWN:
                return event.key

    def imprime_nome(self):
        tela = self.telamenu.tela
        self.nome = ""
        for i in range(len(self.nomecorrente)):
            self.nome = self.nome + self.nomecorrente[i]

        fonte = pygame.font.SysFont("Arial", self.TAMANHO_LETRA_DADOS, False, False)
        texto = fonte.render(self.nome, True, self.COR_PRETO)
        tela.blit(texto, (self.POSICAOX_LETRA_DADOS, self.posicaoimprimenome))
        pygame.display.flip()

    def enviar_dados_jogador(self, ldadosjogador):
        return self.aplcadastrarjogador.cadastrar_jogador(ldadosjogador)

    def cadastro(self):
        ldadosjogador = []
        while True:
            tecla = self.get_key()
            if tecla == K_RETURN:
                ldadosjogador.append(self.nome)
                self.nome = ""
                self.nomecorrente = []
                if len(ldadosjogador) == len(self.lopcoes):
                    self.posicaoimprimenome = self.POSICAO_INICIAL_DADOS
                    return self.enviar_dados_jogador(ldadosjogador)
                else:
                    self.posicaoimprimenome = self.posicaoimprimenome + self.INCREMENTA_ESPACAMENTO
            elif tecla <= 127:
                self.nomecorrente.append(chr(tecla))
                self.imprime_nome()