Example #1
0
    def __init__(self, mapa):
        self.__config = JogoConfigLoader()
        self.__fundo = self.__config.obter_fundo(mapa)
        self.__mapa = []
        blocos = self.__config.obter_mapa(mapa)["blocos"]
        for y in range(len(blocos)):
            for x in range((len(blocos[y]))):
                try:
                    self.__mapa.append(
                        BlocoCenario(int(blocos[y][x]), [x * 33, y * 36]))
                #Uso de exceções:Se o material for 0 ele não vai encontrar sprite, consequentemente não via criar o bloco
                except FileNotFoundError as e:
                    print(e)
                    pass

        self.__final = self.__config.obter_final(mapa)
        #itens no chão
        self.__itens = []
        self.__hitbox_blocos = [bloco.hitbox for bloco in self.__mapa]
Example #2
0
 def __init__(self, numero_fase: int, jogador: Jogador, cenario: Cenario):
     pygame.init()
     self.__numero_fase = numero_fase
     self.__config = JogoConfigLoader()
     self.__jogador = jogador
     self.__cenario = cenario
     self.__tipos_colisao = {
         "top": False,
         "bottom": False,
         "right": False,
         "left": False
     }
     self.__clock = pygame.time.Clock()
     self.__hud = HUD()
     self.__blocktimer = pygame.time.get_ticks()
     self.__screen = pygame.display.set_mode((1280, 720))
     self.__menu_pause = MenuPause(self.__screen)
     self.__dao = DAO()
Example #3
0
class Sistema(ISistema):
    def __init__(self):
        self.__config = JogoConfigLoader()

    def selecionar_fase(self, nome, numero_fase):
        cenario = Cenario(numero_fase + 1)
        jogador = Jogador(nome,
                          self.__config.obter_posicao_inicial(numero_fase + 1))
        machado = Machado()
        pa = Pa()
        picareta = Picareta()
        jogador.adicionar_item(machado)
        jogador.adicionar_item(pa)
        jogador.adicionar_item(picareta)
        jogo = Jogo(numero_fase + 1, jogador, cenario)
        jogo.inicia_loop()

    def abrir_opcoes(self):
        pass

    def fechar(self):
        pass
Example #4
0
class Cenario(ICenario):
    def __init__(self, mapa):
        self.__config = JogoConfigLoader()
        self.__fundo = self.__config.obter_fundo(mapa)
        self.__mapa = []
        blocos = self.__config.obter_mapa(mapa)["blocos"]
        for y in range(len(blocos)):
            for x in range((len(blocos[y]))):
                try:
                    self.__mapa.append(
                        BlocoCenario(int(blocos[y][x]), [x * 33, y * 36]))
                #Uso de exceções:Se o material for 0 ele não vai encontrar sprite, consequentemente não via criar o bloco
                except FileNotFoundError as e:
                    print(e)
                    pass

        self.__final = self.__config.obter_final(mapa)
        #itens no chão
        self.__itens = []
        self.__hitbox_blocos = [bloco.hitbox for bloco in self.__mapa]

    def quebrar(self, bloco, ferramenta):
        try:
            if bloco.vida <= bloco.dano[ferramenta]:
                self.__mapa.remove(bloco)
                self.__itens.append(
                    BlocoItem(bloco.material, [
                        bloco.hitbox.x + bloco.tamanho_hitbox[0] // 2,
                        bloco.hitbox.y + bloco.tamanho_hitbox[1]
                    ]))
                return True
            else:
                bloco.vida -= bloco.dano[ferramenta]
                bloco.atualizar()
                return False
        except Exception:
            pass

    def atualizar(self, screen):
        for bloco in self.__mapa:
            screen.blit(bloco.sprite, (bloco.hitbox.x, bloco.hitbox.y))
            #pygame.draw.rect(screen, (255, 0, 0), bloco.hitbox, 2)

        for item in self.__itens:
            screen.blit(item.sprite, (item.hitbox.x, item.hitbox.y))

    def remover_item(self, item):
        self.__itens.remove(item)

    def adicionar_bloco_cenario(self, item: BlocoItem, pos: list,
                                last_side: int):
        #Criar bloco
        if last_side == 1:
            bloco = BlocoCenario(item.material, [pos[0] + 60, pos[1] + 24])

        else:
            bloco = BlocoCenario(item.material, [pos[0] - 60, pos[1] + 24])

        pos_cen = 0

        while pos_cen < len(self.__mapa):
            bloco_cen = self.__mapa[pos_cen]

            if bloco.hitbox.colliderect(bloco_cen.hitbox):
                bloco.hitbox.y -= 36
                pos_cen = -1

            pos_cen += 1

        #Adicionar o bloco ao cenário
        self.__mapa.append(bloco)

    def remover_bloco_mapa(self, bloco):
        self.__mapa.remove(bloco)

    @property
    def fundo(self):
        return self.__fundo

    @property
    def mapa(self):
        return self.__mapa

    @property
    def final(self):
        return self.__final

    @property
    def hitbox_blocos(self):
        return self.__hitbox_blocos

    @property
    def itens(self):
        return self.__itens
Example #5
0
 def __init__(self):
     self.__config = JogoConfigLoader()