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()
class ControladorMenu(): def __init__(self): pygame.init() self.telamenu = TelaMenu() self.controlador = Controlador() self.caminhoimagem = (os.getcwd()).replace("principal",os.path.join("recursos","imagem")) def exibir_tela_menu(self): self.telamenu.exibe_imagem(self.caminhoimagem, "fundo2.jpg", Posicao(0,0)) self.telamenu.exibe_imagem(self.caminhoimagem, "nome2.png", Posicao(150,140)) def exibe_opcoes_menu(self, id): tam1 = 30 tam2 = 30 tam3 = 30 tam4 = 30 cor1 = (80,80,80) cor2 = (80,80,80) cor3 = (80,80,80) cor4 = (80,80,80) if id == 1: tam1 = 40 cor1 = (0,0,0) if id == 2: tam2 = 40 cor2 = (0,0,0) if id == 3: tam3 = 40 cor3 = (0,0,0) if id == 4: tam4 = 40 cor4 = (0,0,0) self.telamenu.exibe_texto_menu("INICIAR", tam1, cor1, 302, 30) self.telamenu.exibe_texto_menu("CADASTRAR", tam2, cor2, 302, 70) self.telamenu.exibe_texto_menu("CONFIGURACOES", tam3, cor3, 302, 110) self.telamenu.exibe_texto_menu("SAIR", tam4, cor4, 302, 150) #TODO refatorar toda a parte do menu def manipula_seta(self, menuselecao): if menuselecao == 1: self.telamenu.exibe_imagem(self.caminhoimagem, "seta.gif", Posicao(245, 260)) elif menuselecao == 2: self.telamenu.exibe_imagem(self.caminhoimagem, "seta.gif", Posicao(245, 300)) elif menuselecao == 3: self.telamenu.exibe_imagem(self.caminhoimagem, "seta.gif", Posicao(245, 340)) elif menuselecao == 4: self.telamenu.exibe_imagem(self.caminhoimagem, "seta.gif", Posicao(245, 380)) def menu_selecao(self, menuselecao): ## TELA 1 if menuselecao == 1: self.exibe_opcoes_menu(menuselecao) elif menuselecao == 2: self.exibe_opcoes_menu(menuselecao) elif menuselecao == 3: self.exibe_opcoes_menu(menuselecao) elif menuselecao == 4: self.exibe_opcoes_menu(menuselecao) ## REGRAS DA TELA 1: if menuselecao < 1: #nao incrementar estado se apertar p cima de novo menuselecao = 1 elif menuselecao == 5: #nao incrementar estado se apertar p baixo de novo menuselecao = 4 elif menuselecao == 13: # PARA, POR ENQUANTO, NAO FUNCIONAR NADA EM CONFIGURACOES menuselecao = 3 elif menuselecao == 14: # se escolher a opcao 'SAIR' exit() elif menuselecao == 12: #se der enter na opcao 'CADASTRAR' menuselecao = 200 elif menuselecao == 11: self.controlador.jogo() ## TELA 2 elif menuselecao == 200: self.telamenu.exibe_texto_menu("NOME: ", 40, (0,0,0), 105, 22) pygame.draw.rect(self.telamenu.tela, (255,255,255), (205,270,300,30), 0) self.telamenu.exibe_texto_menu("VOLTAR", 30, (80,80,80), 302, 70) pygame.display.flip() menuselecao = self.cadastrar() elif menuselecao == 201: self.manipula_seta(2) self.telamenu.exibe_texto_menu("Nome cadastrado com sucesso!", 30, (80,80,80), 200, 22) self.telamenu.exibe_texto_menu("VOLTAR", 40, (0,0,0), 302, 70) ## REGRAS DA TELA 2 elif (menuselecao == 210) | (menuselecao == 199): # por enquanto, so escreve o nome na tela, mas nao persiste os dados menuselecao = 200 elif menuselecao == 202: #nao incrementar estado se apertar p baixo de novo menuselecao = 201 elif menuselecao == 211: #se clicar em voltar, volta para o menu inical menuselecao = 1 return menuselecao def menu(self): menuselecao = 1 while True: self.exibir_tela_menu() self.manipula_seta(menuselecao) menuselecao = self.menu_selecao(menuselecao) pygame.display.update() pygame.display.flip() for e in pygame.event.get(): if e.type == QUIT: exit() if e.type == KEYDOWN: if e.key == K_DOWN: menuselecao += 1 if e.key == K_UP: menuselecao -= 1 if e.key == K_RETURN: menuselecao += 10 if e.key == K_ESCAPE: menuselecao -= 10 #---------------------------------------------------- Cadastro def get_key(self): while 1: event = pygame.event.poll() if event.type == KEYDOWN: return event.key else: pass def imprime_nome(self, nome_corrente, tela): nome = "" for i in range(len(nome_corrente)): nome = nome + nome_corrente[i] fonte = pygame.font.SysFont("ARIAL", 24, False, False) texto = fonte.render(nome, True, (0,0,0)) tela.blit(texto, (215,270)) pygame.display.flip() return nome def escreve_arquivo(self, nome): arq = open("ranking.txt", "a") arq.write(nome + " ") def cadastrar(self): nome_corrente = [] nome = "" while True: tecla = self.get_key() if tecla == K_RETURN: self.escreve_arquivo(nome) return 201 elif tecla <= 127: nome_corrente.append(chr(tecla)) nome = self.imprime_nome(nome_corrente, self.telamenu.tela)
class ControladorMenu(): POSICAOX_SETA = 245 POSICAOY_SETA = 260 POSICAOX_OPCAO_MENU = 302 POSICAOY_OPCAO_MENU = 280 DISTANCIA_OPCAO_MENU = 40 TAMANHO_OPCAO_MENU_PADRAO = 30 TAMANHO_OPCAO_MENU_SELECAO = 40 COR_PRETO = (0, 0, 0) COR_CINZA = (80, 80, 80) def __init__(self): pygame.init() self.telamenu = TelaMenu() self.controladorjogo = ControladorJogo() self.lopcoes = ["INICIAR", "CADASTRAR", "RANKING", "SAIR"] self.menu = Menu() @staticmethod def get_imagem(nomeimagem): return pygame.image.load( os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem)) def exibir_tela_menu(self): imagemfundomenu = self.get_imagem("fundomenu.jpg") self.telamenu.exibe_imagem(imagemfundomenu, EstiloElementos.posicao_imagem_fundo()) imagemfundomenu = self.get_imagem("titulojogo.png") self.telamenu.exibe_imagem(imagemfundomenu, EstiloElementos.posicao_titulo_jogo()) def exibe_opcoes_menu(self, menuselecao): alteraposicao = 0 for id, opcao in enumerate(self.lopcoes): tam = self.TAMANHO_OPCAO_MENU_PADRAO cor = self.COR_CINZA if id + 1 == menuselecao: tam = self.TAMANHO_OPCAO_MENU_SELECAO cor = self.COR_PRETO self.telamenu.exibe_texto_menu( opcao, tam, cor, Posicao(self.POSICAOX_OPCAO_MENU, self.POSICAOY_OPCAO_MENU + alteraposicao)) alteraposicao = alteraposicao + self.DISTANCIA_OPCAO_MENU def manipula_seta(self, menuselecao): imagemseta = self.get_imagem("seta.gif") self.telamenu.exibe_imagem( imagemseta, Posicao(self.POSICAOX_SETA, self.POSICAOY_SETA + 40 * (menuselecao - 1))) def update(self, observable): if observable.baixo: self.menu.alterar_opcao_menu_baixo() if (self.menuselecao >= 1) & (self.menuselecao < len( self.lopcoes)): self.menuselecao += 1 elif observable.cima: self.menu.alterar_opcao_menu_cima() if (self.menuselecao > 1) & (self.menuselecao <= len( self.lopcoes)): self.menuselecao -= 1 elif observable.enter: self.menu.selecionar_opcao_menu() def inicializa_menu(self): pygame.mouse.set_visible(False) observable = ObservableEventosTeclado() observable.add_observer(self) self.menuselecao = 1 while True: self.exibir_tela_menu() self.manipula_seta(self.menuselecao) self.exibe_opcoes_menu(self.menuselecao) observable.verifica_evento() pygame.display.update() pygame.display.flip() #self.controladorjogo.jogo(self.menu.estadomenuiniciar.jogador) print("voltou p contrlador menu")
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)
class ControladorMenu(): POSICAOX_SETA = 245 POSICAOY_SETA = 260 POSICAOX_OPCAO_MENU = 302 POSICAOY_OPCAO_MENU = 280 DISTANCIA_OPCAO_MENU = 40 TAMANHO_OPCAO_MENU_PADRAO = 30 TAMANHO_OPCAO_MENU_SELECAO = 40 COR_PRETO = (0, 0, 0) COR_CINZA = (80, 80, 80) def __init__(self): pygame.init() self.telamenu = TelaMenu() self.controladorjogo = ControladorJogo() self.lopcoes = ["INICIAR", "CADASTRAR", "RANKING", "SAIR"] self.menu = Menu() @staticmethod def get_imagem(nomeimagem): return pygame.image.load(os.path.join(CaminhoRecursos.caminho_imagens(), nomeimagem)) def exibir_tela_menu(self): imagemfundomenu = self.get_imagem("fundomenu.jpg") self.telamenu.exibe_imagem(imagemfundomenu, EstiloElementos.posicao_imagem_fundo()) imagemfundomenu = self.get_imagem("titulojogo.png") self.telamenu.exibe_imagem(imagemfundomenu, EstiloElementos.posicao_titulo_jogo()) def exibe_opcoes_menu(self, menuselecao): alteraposicao = 0 for id, opcao in enumerate(self.lopcoes): tam = self.TAMANHO_OPCAO_MENU_PADRAO cor = self.COR_CINZA if id + 1 == menuselecao: tam = self.TAMANHO_OPCAO_MENU_SELECAO cor = self.COR_PRETO self.telamenu.exibe_texto_menu(opcao, tam, cor, Posicao(self.POSICAOX_OPCAO_MENU, self.POSICAOY_OPCAO_MENU + alteraposicao)) alteraposicao = alteraposicao + self.DISTANCIA_OPCAO_MENU def manipula_seta(self, menuselecao): imagemseta = self.get_imagem("seta.gif") self.telamenu.exibe_imagem(imagemseta, Posicao(self.POSICAOX_SETA, self.POSICAOY_SETA + 40 * (menuselecao - 1))) def update(self, observable): if observable.baixo: self.menu.alterar_opcao_menu_baixo() if (self.menuselecao >= 1) & (self.menuselecao < len(self.lopcoes)): self.menuselecao += 1 elif observable.cima: self.menu.alterar_opcao_menu_cima() if (self.menuselecao > 1) & (self.menuselecao <= len(self.lopcoes)): self.menuselecao -= 1 elif observable.enter: self.menu.selecionar_opcao_menu() def inicializa_menu(self): pygame.mouse.set_visible(False) observable = ObservableEventosTeclado() observable.add_observer(self) self.menuselecao = 1 while True: self.exibir_tela_menu() self.manipula_seta(self.menuselecao) self.exibe_opcoes_menu(self.menuselecao) observable.verifica_evento() pygame.display.update() pygame.display.flip() #self.controladorjogo.jogo(self.menu.estadomenuiniciar.jogador) print("voltou p contrlador menu")
class ControladorMenu(): POSICAOX_SETA = 245 POSICAOY_SETA = 260 POSICAOX_OPCAO_MENU = 302 POSICAOY_OPCAO_MENU = 30 DISTANCIA_OPCAO_MENU = 40 TAMANHO_OPCAO_MENU_PADRAO = 30 TAMANHO_OPCAO_MENU_SELECAO = 40 COR_PRETO = (0, 0, 0) COR_CINZA = (80, 80, 80) def __init__(self, controladorjogo): pygame.init() self.telamenu = TelaMenu() self.caminhoimagem = CaminhoRecursos.caminho_imagens() self.controladorjogo = controladorjogo self.telacadastro = TelaCadastro() self.telalogin = TelaLogin() self.lopcoes = ["INICIAR", "CADASTRAR", "CONFIGURACOES", "SAIR"] self.mensagemsucesso = "Jogador cadastrado com sucesso!" self.mensagemerro = "Login informado ja existe!" self.mensagemdadoinvalido = "Os dados informados nao sao validos!" def exibir_tela_menu(self): self.telamenu.exibe_imagem(self.caminhoimagem, "fundomenu.jpg", EstiloElementos.posicao_imagem_fundo()) self.telamenu.exibe_imagem(self.caminhoimagem, "titulojogo.png", EstiloElementos.posicao_titulo_jogo()) def exibir_musica(self): self.telamenu.exibe_musica(CaminhoRecursos.caminho_musicas(), "music1.mp3") def exibe_opcoes_menu(self, menuselecao): alteraposicao = 0 for id, opcao in enumerate(self.lopcoes): tam = self.TAMANHO_OPCAO_MENU_PADRAO cor = self.COR_CINZA if id + 1 == menuselecao: tam = self.TAMANHO_OPCAO_MENU_SELECAO cor = self.COR_PRETO self.telamenu.exibe_texto_menu(opcao, tam, cor, Posicao(self.POSICAOX_OPCAO_MENU, self.POSICAOY_OPCAO_MENU + alteraposicao)) alteraposicao = alteraposicao + self.DISTANCIA_OPCAO_MENU def exibe_tela_mensagem_cadastro(self, mensagem): self.manipula_seta(2) self.telamenu.exibe_mensagem_cadastro(mensagem, EstiloElementos.posicao_mensagem_cadastro()) self.telamenu.exibe_texto_menu("VOLTAR", self.TAMANHO_OPCAO_MENU_SELECAO, self.COR_PRETO, Posicao(self.POSICAOX_OPCAO_MENU, 70)) pygame.display.flip() def manipula_seta(self, menuselecao): if (menuselecao >= 1) & (menuselecao <= len(self.lopcoes)): self.telamenu.exibe_imagem(self.caminhoimagem, "seta.gif", Posicao(self.POSICAOX_SETA, self.POSICAOY_SETA + 40 * (menuselecao - 1))) def menu_selecao(self, menuselecao): ## TELA MENU PRINCIPAL if (menuselecao >= 1) & (menuselecao <= len(self.lopcoes)): self.exibe_opcoes_menu(menuselecao) ## REGRAS DA TELA MENU PRINCIPAL: elif (menuselecao < 1) | (menuselecao == 113) | (menuselecao == 213) | (menuselecao == 216): menuselecao = 1 # nao incrementar estado se apertar p cima de novo elif menuselecao == len(self.lopcoes) + 1: menuselecao = len(self.lopcoes) # nao incrementar estado se apertar p baixo de novo elif (menuselecao == 11) | (menuselecao == 99) | (menuselecao == 101): menuselecao = 100 # se der enter na opcao 'INICIAR' elif (menuselecao == 12) | (menuselecao == 199) | (menuselecao == 201): menuselecao = 200 # se der enter na opcao 'CADASTRAR' elif menuselecao == 13: menuselecao = 3 # PARA, POR ENQUANTO, NAO FUNCIONAR NADA EM CONFIGURACOES elif menuselecao == 14: exit() # se der enter na opcao 'SAIR' ## TELA LOGIN elif menuselecao == 100: self.telalogin.exibe_tela_informar_dados() if self.telalogin.cadastro(): self.controladorjogo.jogo() else: menuselecao = 103 self.exibe_tela_mensagem_cadastro(self.mensagemdadoinvalido) ## REGRAS DA TELA LOGIN elif menuselecao == 103: self.exibe_tela_mensagem_cadastro(self.mensagemdadoinvalido) elif (menuselecao == 102) | (menuselecao == 104): menuselecao = 103 ## TELA CADASTRO elif menuselecao == 200: self.telacadastro.exibe_tela_informar_dados() if self.telacadastro.cadastro(): menuselecao = 203 self.exibe_tela_mensagem_cadastro(self.mensagemsucesso) else: menuselecao = 206 self.exibe_tela_mensagem_cadastro(self.mensagemerro) elif menuselecao == 203: self.exibe_tela_mensagem_cadastro(self.mensagemsucesso) elif menuselecao == 206: self.exibe_tela_mensagem_cadastro(self.mensagemerro) ## REGRAS DA TELA CADASTRO elif (menuselecao == 202) | (menuselecao == 204): menuselecao = 203 elif (menuselecao == 205) | (menuselecao == 207): menuselecao = 206 return menuselecao def menu(self): menuselecao = 1 # self.exibir_musica() while True: self.exibir_tela_menu() self.manipula_seta(menuselecao) menuselecao = self.menu_selecao(menuselecao) pygame.display.update() pygame.display.flip() for e in pygame.event.get(): if e.type == QUIT: exit() if e.type == KEYDOWN: if e.key == K_DOWN: menuselecao += 1 elif e.key == K_UP: menuselecao -= 1 elif e.key == K_RETURN: menuselecao += 10 elif e.key == K_ESCAPE: menuselecao -= 10