Source code for alpha.india

# patricia.alpha.india.py
# SPDX-License-Identifier: GPL-3.0-or-later
"""Jogo de Labirinto com cenas. 
   
   Calabouço de Barro.

.. codeauthor:: Rodrigo Esquinelato <resquinelato@gmail.com>

Classe neste módulo:

    :py:class:`Eventos` Gera a cena, personagem e a movimentação

Changelog
---------
.. versionadded::    20.07

   Criando a lógica do jogo e o layout das fases.
        
   Contador adicionado para gerar as seguintes fases em função da linha da matriz.
        
   Contador adicionado para gerar as seguintes posições iniciais em função do índice da lista.        
"""

#FALTA - melhorar o código: criar as classes, funções, passar parametros
#FALTA - VErifica se esta na cena correta e se chegou no baú do tesouro

from _spy.vitollino.main import Cena, Elemento, STYLE
from browser import document # importa o DOM para atribuir o evento de teclado

cont = 0 #contador index da matriz

[docs]class Eventos: """ Associa um evento a uma imagem """ CENA_corredor_1 = "https://i.imgur.com/L71ZV6Z.png" CENA_corredor_2 = "https://i.imgur.com/5Qno2fs.png" CENA_corredor_3 = "https://i.imgur.com/gZ5wc0h.png" CENA_corredor_4 = "https://i.imgur.com/xI8i7Nc.png" CENA_corredor_5 = "https://i.imgur.com/GLVctqb.png" listaFase = [CENA_corredor_2, #listaFase = [local_imagem_fase,...] CENA_corredor_3, CENA_corredor_4, CENA_corredor_5,] BONECO = "https://i.imgur.com/k63kwfa.png" STYLE["width"] = 640 #tamanho da cena def __init__(self): """Gera o início do jogo com a posição do personagem e a primeira cena :return: self.boneco com parâmetros (personagem, poisção_x, posição_y, cenário) """ self.x1 = 100 self.y1 = 40 self.ambiente = Cena(self.CENA_corredor_1) self.boneco = Elemento(self.BONECO, x=self.x1, y=self.y1, cena=self.ambiente) document.bind("keydown", self.anda_boneco) # captura o evento de teclado
[docs] def vai(self): """ :return: Cenário do labirinto. """ self.ambiente.vai()
[docs] def anda_boneco(self, ev=None): matrizPosicaoInicial = [[60,280], #matrizPosicaoInicial = [[x_inicial, y_inicial]...] [450,50], [50,430], [200,50]] """" Faz o boneco caminhar com a catura das setas. :param ev: Importa evento de teclado através do browser. :retun: self.boneco.x como a posição x do personagem e self.boneco.y como a posição y """ key = ev.keyCode # recupera o código da tecla enviada no evento # os códigos 37 e 38 são a seta para esquerda e para direita # os códigos 39 e 40 são a seta para cima e para baixo if key in [37, 39]: key = (key - 38) * 5 self.boneco.x += key # muda a posição de mais um ou menos um elif key in [38, 40]: key = (key - 39) * 5 self.boneco.y += key # muda a posição de mais um ou menos um #estudo da parede #if self.boneco.x <= 80 """:if: O personagem atingiu uma porta, muda para a próxima cena """ # FALTA mapear os pontos, criar função para passar parametros ou chamar outra classe #ideia de cria uma matriz com os pontos de localização do portal if self.boneco.x > 400 and self.boneco.y > 200: global cont #contador estanciado fora do def para gerar a linha a ser lida na lista/MAtriz self.ambiente = Cena(self.listaFase[cont]) #lê a cena que está descrita no primeiro ítem da lista STYLE["width"] = 640 self.x2 = int(matrizPosicaoInicial[cont][0]) #posição x_inicial da fase, descrita na matriz pela primeira coluna self.y2 = int(matrizPosicaoInicial[cont][1]) #posição y_inicial da fase descita pela segunda coluna self.boneco = Elemento(self.BONECO, x=self.x2, y=self.y2, cena=self.ambiente) """:Contador: cont: Varia a cada momento que o *if* é satisfeito a ser utilizado em cada cenário e posicição :param self.ambiente: Novos cenários das seguintes fases. :param self.x2: Posição x inicial das novas fases. :param self.y2: Posição y inicial das novas fases. """ self.boneco.x = self.x2 self.boneco.y = self.y2 self.ambiente.vai() cont = cont + 1 if cont > 3: #Regulador do contador. Precisa alterar a programação para voltar a fase em um portal de retorno cont = 0
#se atingiu o bau, ganhou o jogo. # FALTA se estiver na cena certa e na posição certa, avisa que ganhou o jogo if __name__ == "__main__": Eventos().vai()