diff --git a/CInemon-IP/README.md b/CInemon-IP/README.md new file mode 100644 index 0000000..37c28cf --- /dev/null +++ b/CInemon-IP/README.md @@ -0,0 +1,34 @@ +CINEMON IP - A Revolução + +HISTÓRIA: +Você é um estudante da UFPE recrutado para conter a revolução de Pedro Noites, que criou criaturas digitais (CInemons) para dominar o campus e restaurar a grade antiga do CIn. Seu objetivo é escolher 3 CInemons e enfrentar os líderes revolucionários para restaurar a ordem acadêmica. + +COMO JOGAR: +- Movimento: WASD ou setas +- Interação: Espaço +- Menu: ESC +- Batalhas: + 1/2: Ataques + 3: Trocar CInemon + +CINEMONS DISPONÍVEIS: +🔥 Fogo: Heatbug, Patchburn +⚡ Elétrico: Pikacode, Ampereon +🌍 Terra: Minerbit, Terrabyte +💧 Água: Hydrabyte, Debbubble +🌿 Planta: Dataflora, Treebit + +CHEFES: +1. (Área 2) +2. (CAC) +3. Pedro Noites (CIn) - com Paradoxium (tipo Discreto) + +SISTEMA DE BATALHA: +Fogo > Planta > Terra > Elétrico > Água > Fogo +Tipos Especiais têm resistências únicas. + +OBJETIVO FINAL: +Chegar no CIn, recuperando os pedaços dos crachás e impedindo Pedro Noites de restaurar a antiga grade do CIn + +Gênero: RPG Acadêmico-Tático +Plataforma: PC (Python/Pygame) diff --git a/CInemon-IP/cinemons/Aetherbyte.png b/CInemon-IP/cinemons/Aetherbyte.png new file mode 100644 index 0000000..b09373f Binary files /dev/null and b/CInemon-IP/cinemons/Aetherbyte.png differ diff --git a/CInemon-IP/cinemons/Aqualynx.png b/CInemon-IP/cinemons/Aqualynx.png new file mode 100644 index 0000000..2d58e4f Binary files /dev/null and b/CInemon-IP/cinemons/Aqualynx.png differ diff --git a/CInemon-IP/cinemons/Bitwhale.png b/CInemon-IP/cinemons/Bitwhale.png new file mode 100644 index 0000000..0de8af2 Binary files /dev/null and b/CInemon-IP/cinemons/Bitwhale.png differ diff --git a/CInemon-IP/cinemons/Butterfault.png b/CInemon-IP/cinemons/Butterfault.png new file mode 100644 index 0000000..1500eec Binary files /dev/null and b/CInemon-IP/cinemons/Butterfault.png differ diff --git a/CInemon-IP/cinemons/Discretex.png b/CInemon-IP/cinemons/Discretex.png new file mode 100644 index 0000000..2fbc27a Binary files /dev/null and b/CInemon-IP/cinemons/Discretex.png differ diff --git a/CInemon-IP/cinemons/Emberfang.png b/CInemon-IP/cinemons/Emberfang.png new file mode 100644 index 0000000..662dfca Binary files /dev/null and b/CInemon-IP/cinemons/Emberfang.png differ diff --git a/CInemon-IP/cinemons/Firewall.png b/CInemon-IP/cinemons/Firewall.png new file mode 100644 index 0000000..faa9dfc Binary files /dev/null and b/CInemon-IP/cinemons/Firewall.png differ diff --git a/CInemon-IP/cinemons/Granitex.png b/CInemon-IP/cinemons/Granitex.png new file mode 100644 index 0000000..5abd81a Binary files /dev/null and b/CInemon-IP/cinemons/Granitex.png differ diff --git a/CInemon-IP/cinemons/Grasscat.png b/CInemon-IP/cinemons/Grasscat.png new file mode 100644 index 0000000..1b3e7e9 Binary files /dev/null and b/CInemon-IP/cinemons/Grasscat.png differ diff --git a/CInemon-IP/cinemons/Leafbyte.png b/CInemon-IP/cinemons/Leafbyte.png new file mode 100644 index 0000000..1b0314b Binary files /dev/null and b/CInemon-IP/cinemons/Leafbyte.png differ diff --git a/CInemon-IP/cinemons/MinerByte.png b/CInemon-IP/cinemons/MinerByte.png new file mode 100644 index 0000000..86016d6 Binary files /dev/null and b/CInemon-IP/cinemons/MinerByte.png differ diff --git a/CInemon-IP/cinemons/Paradoxium.png b/CInemon-IP/cinemons/Paradoxium.png new file mode 100644 index 0000000..8572ab3 Binary files /dev/null and b/CInemon-IP/cinemons/Paradoxium.png differ diff --git a/CInemon-IP/cinemons/Redlion.png b/CInemon-IP/cinemons/Redlion.png new file mode 100644 index 0000000..16bc5b5 Binary files /dev/null and b/CInemon-IP/cinemons/Redlion.png differ diff --git a/CInemon-IP/cinemons/Serpython.png b/CInemon-IP/cinemons/Serpython.png new file mode 100644 index 0000000..3f9c180 Binary files /dev/null and b/CInemon-IP/cinemons/Serpython.png differ diff --git a/CInemon-IP/cinemons/Terrabyte.png b/CInemon-IP/cinemons/Terrabyte.png new file mode 100644 index 0000000..367ee51 Binary files /dev/null and b/CInemon-IP/cinemons/Terrabyte.png differ diff --git a/CInemon-IP/cinemons/pikacode.png b/CInemon-IP/cinemons/pikacode.png new file mode 100644 index 0000000..74e2c04 Binary files /dev/null and b/CInemon-IP/cinemons/pikacode.png differ diff --git a/CInemon-IP/code/__pycache__/batalha_ui.cpython-311.pyc b/CInemon-IP/code/__pycache__/batalha_ui.cpython-311.pyc new file mode 100644 index 0000000..05a9821 Binary files /dev/null and b/CInemon-IP/code/__pycache__/batalha_ui.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/batalha_ui.cpython-312.pyc b/CInemon-IP/code/__pycache__/batalha_ui.cpython-312.pyc new file mode 100644 index 0000000..3bb4549 Binary files /dev/null and b/CInemon-IP/code/__pycache__/batalha_ui.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/batalha_ui.cpython-313.pyc b/CInemon-IP/code/__pycache__/batalha_ui.cpython-313.pyc new file mode 100644 index 0000000..f892adb Binary files /dev/null and b/CInemon-IP/code/__pycache__/batalha_ui.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/cinemon.cpython-311.pyc b/CInemon-IP/code/__pycache__/cinemon.cpython-311.pyc new file mode 100644 index 0000000..114f07f Binary files /dev/null and b/CInemon-IP/code/__pycache__/cinemon.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/cinemon.cpython-312.pyc b/CInemon-IP/code/__pycache__/cinemon.cpython-312.pyc new file mode 100644 index 0000000..b0671e2 Binary files /dev/null and b/CInemon-IP/code/__pycache__/cinemon.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/cinemon.cpython-313.pyc b/CInemon-IP/code/__pycache__/cinemon.cpython-313.pyc new file mode 100644 index 0000000..5c789bf Binary files /dev/null and b/CInemon-IP/code/__pycache__/cinemon.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/config.cpython-311.pyc b/CInemon-IP/code/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000..a0846c0 Binary files /dev/null and b/CInemon-IP/code/__pycache__/config.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/config.cpython-312.pyc b/CInemon-IP/code/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000..b79b6a8 Binary files /dev/null and b/CInemon-IP/code/__pycache__/config.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/config.cpython-313.pyc b/CInemon-IP/code/__pycache__/config.cpython-313.pyc new file mode 100644 index 0000000..a27b6ec Binary files /dev/null and b/CInemon-IP/code/__pycache__/config.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/gema.cpython-311.pyc b/CInemon-IP/code/__pycache__/gema.cpython-311.pyc new file mode 100644 index 0000000..79b6d66 Binary files /dev/null and b/CInemon-IP/code/__pycache__/gema.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/gema.cpython-312.pyc b/CInemon-IP/code/__pycache__/gema.cpython-312.pyc new file mode 100644 index 0000000..08bdaa8 Binary files /dev/null and b/CInemon-IP/code/__pycache__/gema.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/gema.cpython-313.pyc b/CInemon-IP/code/__pycache__/gema.cpython-313.pyc new file mode 100644 index 0000000..a42fead Binary files /dev/null and b/CInemon-IP/code/__pycache__/gema.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/inimigo.cpython-311.pyc b/CInemon-IP/code/__pycache__/inimigo.cpython-311.pyc new file mode 100644 index 0000000..02cc30d Binary files /dev/null and b/CInemon-IP/code/__pycache__/inimigo.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/inimigo.cpython-312.pyc b/CInemon-IP/code/__pycache__/inimigo.cpython-312.pyc new file mode 100644 index 0000000..e127865 Binary files /dev/null and b/CInemon-IP/code/__pycache__/inimigo.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/inimigo.cpython-313.pyc b/CInemon-IP/code/__pycache__/inimigo.cpython-313.pyc new file mode 100644 index 0000000..5d7bd24 Binary files /dev/null and b/CInemon-IP/code/__pycache__/inimigo.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_base.cpython-311.pyc b/CInemon-IP/code/__pycache__/jogo_base.cpython-311.pyc new file mode 100644 index 0000000..050b8bd Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_base.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_base.cpython-312.pyc b/CInemon-IP/code/__pycache__/jogo_base.cpython-312.pyc new file mode 100644 index 0000000..eb5c007 Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_base.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_base.cpython-313.pyc b/CInemon-IP/code/__pycache__/jogo_base.cpython-313.pyc new file mode 100644 index 0000000..307dd2b Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_base.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_ui.cpython-311.pyc b/CInemon-IP/code/__pycache__/jogo_ui.cpython-311.pyc new file mode 100644 index 0000000..9136aba Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_ui.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_ui.cpython-312.pyc b/CInemon-IP/code/__pycache__/jogo_ui.cpython-312.pyc new file mode 100644 index 0000000..1679d5c Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_ui.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/jogo_ui.cpython-313.pyc b/CInemon-IP/code/__pycache__/jogo_ui.cpython-313.pyc new file mode 100644 index 0000000..d0bd35e Binary files /dev/null and b/CInemon-IP/code/__pycache__/jogo_ui.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/main.cpython-311.pyc b/CInemon-IP/code/__pycache__/main.cpython-311.pyc new file mode 100644 index 0000000..c8ea968 Binary files /dev/null and b/CInemon-IP/code/__pycache__/main.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/npc.cpython-311.pyc b/CInemon-IP/code/__pycache__/npc.cpython-311.pyc new file mode 100644 index 0000000..f3f809e Binary files /dev/null and b/CInemon-IP/code/__pycache__/npc.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/npc.cpython-312.pyc b/CInemon-IP/code/__pycache__/npc.cpython-312.pyc new file mode 100644 index 0000000..26a8dd1 Binary files /dev/null and b/CInemon-IP/code/__pycache__/npc.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/npc.cpython-313.pyc b/CInemon-IP/code/__pycache__/npc.cpython-313.pyc new file mode 100644 index 0000000..b4bcb0e Binary files /dev/null and b/CInemon-IP/code/__pycache__/npc.cpython-313.pyc differ diff --git a/CInemon-IP/code/__pycache__/personagem.cpython-311.pyc b/CInemon-IP/code/__pycache__/personagem.cpython-311.pyc new file mode 100644 index 0000000..60834a5 Binary files /dev/null and b/CInemon-IP/code/__pycache__/personagem.cpython-311.pyc differ diff --git a/CInemon-IP/code/__pycache__/personagem.cpython-312.pyc b/CInemon-IP/code/__pycache__/personagem.cpython-312.pyc new file mode 100644 index 0000000..ecb2712 Binary files /dev/null and b/CInemon-IP/code/__pycache__/personagem.cpython-312.pyc differ diff --git a/CInemon-IP/code/__pycache__/personagem.cpython-313.pyc b/CInemon-IP/code/__pycache__/personagem.cpython-313.pyc new file mode 100644 index 0000000..6f5c0a4 Binary files /dev/null and b/CInemon-IP/code/__pycache__/personagem.cpython-313.pyc differ diff --git a/CInemon-IP/code/batalha_ui.py b/CInemon-IP/code/batalha_ui.py new file mode 100644 index 0000000..d83628a --- /dev/null +++ b/CInemon-IP/code/batalha_ui.py @@ -0,0 +1,221 @@ +import pygame +import sys +import os +from jogo_base import JogoBase +from config import (tela, fonte, fonte_grande, relogio, CINZA, BRANCO, PRETO, VERMELHO, AZUL, VERDE, LARGURA, ALTURA) + +class BatalhaUI(JogoBase): + def __init__(self): + super().__init__() + self.tempo_tremor_jogador = 0 + self.tempo_tremor_inimigo = 0 + self.tremor_offset_jogador = [0, 0] + self.tremor_offset_inimigo = [0, 0] + self.hp_jogador_anterior = None + self.hp_inimigo_anterior = None + self.sprites_cache = {} + + def carregar_sprite_cinemon(self, nome, tamanho): + """Carrega o sprite do CInemon com o tamanho especificado.""" + chave_cache = f"{nome}_{tamanho[0]}x{tamanho[1]}" + if chave_cache in self.sprites_cache: + return self.sprites_cache[chave_cache] + + sprite_path = os.path.join(r"Desktop\CInemon-IP\cinemons", f"{nome}.png") + try: + sprite = pygame.image.load(sprite_path).convert_alpha() + sprite = pygame.transform.scale(sprite, tamanho) + self.sprites_cache[chave_cache] = sprite + return sprite + except Exception as e: + print(f"Erro ao carregar sprite do CInemon {nome}: {e}") + return None + + def desenhar_barra_vida(self, tela, x, y, hp_atual, hp_max, tempo_tremor, tremor_offset): + largura_barra = 200 + altura_barra = 20 + hp_atual = max(0, hp_atual) + proporcao = hp_atual / hp_max + largura_verde = int(largura_barra * proporcao) + + offset_x = tremor_offset[0] if tempo_tremor > 0 else 0 + offset_y = tremor_offset[1] if tempo_tremor > 0 else 0 + + pygame.draw.rect(tela, VERMELHO, (x + offset_x, y + offset_y, largura_barra, altura_barra)) + pygame.draw.rect(tela, VERDE, (x + offset_x, y + offset_y, largura_verde, altura_barra)) + pygame.draw.rect(tela, PRETO, (x + offset_x, y + offset_y, largura_barra, altura_barra), 2) + + def renderizar_batalha(self, jogo): + tela.fill((200, 230, 255)) + + # Atualizar offsets de tremor + if self.tempo_tremor_jogador > 0: + self.tremor_offset_jogador = [pygame.time.get_ticks() % 2 * 4 - 2, pygame.time.get_ticks() % 2 * 4 - 2] + self.tempo_tremor_jogador -= 1 + if self.tempo_tremor_inimigo > 0: + self.tremor_offset_inimigo = [pygame.time.get_ticks() % 2 * 4 - 2, pygame.time.get_ticks() % 2 * 4 - 2] + self.tempo_tremor_inimigo -= 1 + + pygame.draw.rect(tela, AZUL, (50, 50, 400, 200)) + pygame.draw.rect(tela, VERMELHO, (LARGURA - 450, 50, 400, 200)) + + jogador = jogo.cinemon_jogador_atual + nome_jogador = fonte_grande.render(jogador.nome, True, BRANCO) + hp_jogador = fonte.render(f"HP: {max(0, jogador.hp)}/{jogador.hp_max}", True, BRANCO) + tela.blit(nome_jogador, (70, 70)) + tela.blit(hp_jogador, (70, 110)) + self.desenhar_barra_vida(tela, 70, 150, jogador.hp, jogador.hp_max, + self.tempo_tremor_jogador, self.tremor_offset_jogador) + sprite_jogador = self.carregar_sprite_cinemon(jogador.nome, (300, 300)) + sprite_jogador_x = 70 + (self.tremor_offset_jogador[0] if self.tempo_tremor_jogador > 0 else 0) + sprite_jogador_y = 220 + (self.tremor_offset_jogador[1] if self.tempo_tremor_jogador > 0 else 0) + if sprite_jogador: + tela.blit(sprite_jogador, (sprite_jogador_x, sprite_jogador_y)) + else: + pygame.draw.rect(tela, jogador.cor, (sprite_jogador_x, sprite_jogador_y, 300, 300)) + + inimigo = jogo.cinemon_inimigo_atual + nome_inimigo = fonte_grande.render(inimigo.nome, True, BRANCO) + hp_inimigo = fonte.render(f"HP: {max(0, inimigo.hp)}/{inimigo.hp_max}", True, BRANCO) + tela.blit(nome_inimigo, (LARGURA - 430, 70)) + tela.blit(hp_inimigo, (LARGURA - 430, 110)) + self.desenhar_barra_vida(tela, LARGURA - 430, 150, inimigo.hp, inimigo.hp_max, + self.tempo_tremor_inimigo, self.tremor_offset_inimigo) + sprite_inimigo = self.carregar_sprite_cinemon(inimigo.nome, (300, 300)) + sprite_inimigo_x = (LARGURA - 430) + (self.tremor_offset_inimigo[0] if self.tempo_tremor_inimigo > 0 else 0) + sprite_inimigo_y = 220 + (self.tremor_offset_inimigo[1] if self.tempo_tremor_inimigo > 0 else 0) + if sprite_inimigo: + tela.blit(sprite_inimigo, (sprite_inimigo_x, sprite_inimigo_y)) + else: + pygame.draw.rect(tela, inimigo.cor, (sprite_inimigo_x, sprite_inimigo_y, 300, 300)) + + pygame.draw.rect(tela, BRANCO, (50, ALTURA - 200, LARGURA - 100, 150)) + pygame.draw.rect(tela, PRETO, (50, ALTURA - 200, LARGURA - 100, 150), 2) + + linhas = jogo.mensagem_atual.split('\n') + for i, linha in enumerate(linhas): + texto = fonte.render(linha, True, PRETO) + tela.blit(texto, (70, ALTURA - 180 + i * 30)) + + if jogo.fase_batalha == 0 and jogo.turno_jogador and not jogo.aguardando_espaco: + opcoes = fonte.render(f"1. {jogador.ataques[0][0]} 2. {jogador.ataques[1][0]} 3. Trocar", True, PRETO) + tela.blit(opcoes, (LARGURA//2 - opcoes.get_width()//2, ALTURA - 50)) + + if jogo.aguardando_espaco: + instrucao = fonte.render("Pressione ESPAÇO para continuar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 50)) + + self.hp_jogador_anterior = jogador.hp + self.hp_inimigo_anterior = inimigo.hp + + def tela_trocar_cinemon(self, jogo): + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_1 and len(jogo.jogador_cinemons) >= 1 and jogo.jogador_cinemons[0].hp > 0: + antigo = jogo.cinemon_jogador_atual.nome + jogo.cinemon_jogador_atual = jogo.jogador_cinemons[0] + jogo.mensagem_atual = f"Você trocou {antigo} por {jogo.cinemon_jogador_atual.nome}!" + jogo.estado = "batalha" + jogo.fase_batalha = 0 + jogo.turno_jogador = True + jogo.aguardando_espaco = False + elif evento.key == pygame.K_2 and len(jogo.jogador_cinemons) >= 2 and jogo.jogador_cinemons[1].hp > 0: + antigo = jogo.cinemon_jogador_atual.nome + jogo.cinemon_jogador_atual = jogo.jogador_cinemons[1] + jogo.mensagem_atual = f"Você trocou {antigo} por {jogo.cinemon_jogador_atual.nome}!" + jogo.estado = "batalha" + jogo.fase_batalha = 0 + jogo.turno_jogador = True + jogo.aguardando_espaco = False + elif evento.key == pygame.K_3 and len(jogo.jogador_cinemons) >= 3 and jogo.jogador_cinemons[2].hp > 0: + antigo = jogo.cinemon_jogador_atual.nome + jogo.cinemon_jogador_atual = jogo.jogador_cinemons[2] + jogo.mensagem_atual = f"Você trocou {antigo} por {jogo.cinemon_jogador_atual.nome}!" + jogo.estado = "batalha" + jogo.fase_batalha = 0 + jogo.turno_jogador = True + jogo.aguardando_espaco = False + elif evento.key == pygame.K_ESCAPE: + jogo.estado = "batalha" + + tela.fill((200, 200, 255)) + titulo = fonte_grande.render("Escolha um CInemon", True, PRETO) + tela.blit(titulo, (LARGURA//2 - titulo.get_width()//2, 50)) + + for i, cinemon in enumerate(jogo.jogador_cinemons): + y = 150 + i * 150 + retangulo_x = LARGURA//2 - 250 + retangulo_largura = 500 + retangulo_altura = 120 + + pygame.draw.rect(tela, BRANCO if cinemon.hp > 0 else CINZA, + (retangulo_x, y, retangulo_largura, retangulo_altura)) + pygame.draw.rect(tela, PRETO, + (retangulo_x, y, retangulo_largura, retangulo_altura), 2) + + sprite = self.carregar_sprite_cinemon(cinemon.nome, (100, 100)) + sprite_x = retangulo_x + 20 + sprite_y = y + (retangulo_altura - 100) // 2 + if sprite: + tela.blit(sprite, (sprite_x, sprite_y)) + else: + pygame.draw.rect(tela, cinemon.cor, (sprite_x, sprite_y, 100, 100)) + + texto_x = retangulo_x + 140 + nome = fonte.render(f"{i+1}. {cinemon.nome} ({cinemon.tipo})", True, PRETO) + hp = fonte.render(f"HP: {max(0, cinemon.hp)}/{cinemon.hp_max}", True, PRETO) + status = fonte.render("ATIVO" if cinemon.hp > 0 else "DESMAIADO", + True, VERMELHO if cinemon.hp <= 0 else VERDE) + + tela.blit(nome, (texto_x, y + 20)) + tela.blit(hp, (texto_x, y + 50)) + tela.blit(status, (texto_x, y + 80)) + + instrucao = fonte.render("Pressione 1-3 para escolher ou ESC para cancelar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 50)) + + def processar_batalha(self, jogo): + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_SPACE and jogo.aguardando_espaco: + jogo.aguardando_espaco = False + if jogo.cinemon_inimigo_atual.hp <= 0: + jogo.proximo_inimigo() + elif jogo.cinemon_jogador_atual.hp <= 0 and any(c.hp > 0 for c in jogo.jogador_cinemons): + jogo.estado = "trocar_cinemon" + elif jogo.cinemon_jogador_atual.hp <= 0 and not any(c.hp > 0 for c in jogo.jogador_cinemons): + pygame.quit() + sys.exit() + elif jogo.fase_batalha == 1: + jogo.fase_batalha = 2 + jogo.turno_jogador = False + jogo.mensagem_atual = f"{jogo.cinemon_inimigo_atual.nome} está atacando..." + pygame.time.delay(1000) + hp_inimigo_antes = jogo.cinemon_inimigo_atual.hp + jogo.executar_ataque_inimigo() + if self.hp_jogador_anterior is not None and jogo.cinemon_jogador_atual.hp < self.hp_jogador_anterior: + self.tempo_tremor_jogador = 15 + elif jogo.fase_batalha == 3: + jogo.fase_batalha = 0 + jogo.turno_jogador = True + if jogo.fase_batalha == 0 and jogo.turno_jogador and not jogo.aguardando_espaco: + if evento.key == pygame.K_1: + jogo.acao_selecionada = 0 + hp_inimigo_antes = jogo.cinemon_inimigo_atual.hp + jogo.executar_ataque_jogador() + if hp_inimigo_antes is not None and jogo.cinemon_inimigo_atual.hp < hp_inimigo_antes: + self.tempo_tremor_inimigo = 15 + elif evento.key == pygame.K_2: + jogo.acao_selecionada = 1 + hp_inimigo_antes = jogo.cinemon_inimigo_atual.hp + jogo.executar_ataque_jogador() + if hp_inimigo_antes is not None and jogo.cinemon_inimigo_atual.hp < hp_inimigo_antes: + self.tempo_tremor_inimigo = 15 + elif evento.key == pygame.K_3: + jogo.estado = "trocar_cinemon" \ No newline at end of file diff --git a/CInemon-IP/code/cinemon.py b/CInemon-IP/code/cinemon.py new file mode 100644 index 0000000..fb4b7f4 --- /dev/null +++ b/CInemon-IP/code/cinemon.py @@ -0,0 +1,22 @@ +from config import * + +class CInemon: + def __init__(self, nome, tipo, hp_max, velocidade, ataques): + self.nome = nome + self.tipo = tipo + self.hp = hp_max + self.hp_max = hp_max + self.velocidade = velocidade + self.ataques = ataques + self.cor = self._definir_cor_tipo() + + def _definir_cor_tipo(self): + cores = { + "FOGO": VERMELHO, + "AGUA": AZUL, + "PLANTA": VERDE, + "ELETRICO": AMARELO, + "TERRA": MARROM, + "ESPECIAL": ROXO + } + return cores.get(self.tipo, BRANCO) \ No newline at end of file diff --git a/CInemon-IP/code/config.py b/CInemon-IP/code/config.py new file mode 100644 index 0000000..a9c9e5b --- /dev/null +++ b/CInemon-IP/code/config.py @@ -0,0 +1,35 @@ +# config.py +import pygame + +# Constants +LARGURA = 1280 +ALTURA = 720 +VERDE = (0, 128, 0) +BRANCO = (255, 255, 255) +PRETO = (0, 0, 0) +VERMELHO = (255, 0, 0) +AZUL = (0, 0, 255) +ROXO = (128, 0, 128) +CINZA = (128, 128, 128) +AMARELO = (255, 255, 0) +AZUL_ESCURO = (0, 0, 128) +LARANJA = (255, 165, 0) # Added if needed +MARROM = (165, 42, 42) # Added if needed + +# Type effectiveness (example, adjust as needed) +SISTEMA_DE_TIPOS = { + "FOGO": {"AGUA": 0.5, "PLANTA": 2.0, "FOGO": 0.5}, + "AGUA": {"FOGO": 2.0, "TERRA": 0.5, "AGUA": 0.5}, + "PLANTA": {"TERRA": 2.0, "FOGO": 0.5, "PLANTA": 0.5}, + "TERRA": {"ELETRICO": 2.0, "AGUA": 2.0, "TERRA": 0.5}, + "ELETRICO": {"AGUA": 2.0, "TERRA": 0.5, "ELETRICO": 0.5}, + "ESPECIAL": {"ESPECIAL": 1.0} # Default for now +} + +# Pygame initialization +pygame.init() +tela = pygame.display.set_mode((LARGURA, ALTURA)) +pygame.display.set_caption("CINEMON IP - A Revolução") +relogio = pygame.time.Clock() +fonte = pygame.font.SysFont("Arial", 24) +fonte_grande = pygame.font.SysFont("Arial", 36) \ No newline at end of file diff --git a/CInemon-IP/code/gema.py b/CInemon-IP/code/gema.py new file mode 100644 index 0000000..ad443a9 --- /dev/null +++ b/CInemon-IP/code/gema.py @@ -0,0 +1,37 @@ +import pygame +import os +import jogo_base + + + +class Gema: + def __init__(self, x, y): + self.x = x # Posição X no mundo + self.y = y # Posição Y no mundo + self.collected = False # Estado de coleta + self.width = 32 # Tamanho visual do sprite + self.height = 32 + self.rect = pygame.Rect(self.x + 8, self.y + 8, 16, 16) # Hitbox menor para colisão + + # Carrega o sprite da gema + sprite_path = os.path.join("Desktop", "CInemon-IP", "sprites", "spr_gema_coletável_2.png") + + + self.sprite = pygame.image.load(sprite_path).convert_alpha() + self.sprite = pygame.transform.scale(self.sprite, (self.width, self.height)) + + + def desenhar(self, tela, camera, zoom): + if not self.collected: + pos_x = (self.x - camera.x) * zoom + pos_y = (self.y - camera.y) * zoom + scaled_width = int(self.width * zoom) + scaled_height = int(self.height * zoom) + + if self.sprite: + sprite_scaled = pygame.transform.scale(self.sprite, (scaled_width, scaled_height)) + + tela.blit(sprite_scaled, (pos_x, pos_y)) + else: + rect_scaled = pygame.Rect(pos_x, pos_y, scaled_width, scaled_height) + pygame.draw.rect(tela, self.cor, rect_scaled) \ No newline at end of file diff --git a/CInemon-IP/code/inimigo.py b/CInemon-IP/code/inimigo.py new file mode 100644 index 0000000..549d4a5 --- /dev/null +++ b/CInemon-IP/code/inimigo.py @@ -0,0 +1,80 @@ +import pygame +import os +from config import BRANCO, PRETO, VERMELHO, AZUL, VERDE, AMARELO, CINZA, ROXO, LARANJA, MARROM, AZUL_ESCURO + +class Inimigo: + def __init__(self, x, y, nome): + self.x = x + self.y = y + self.nome = nome + self.rect = pygame.Rect(x, y, 32,32) + + # Define a cor e a imagem com base no nome do inimigo + if nome == 'Pedro': + self.cor = VERMELHO + caminho_imagem = os.path.join("Desktop", "CInemon-IP", "sprites", "spr_pedro_manhaes2.png") + + self.imagem = pygame.image.load(caminho_imagem) + self.imagem = pygame.transform.scale(self.imagem, (32, 32)) + self.tem_imagem = True + + elif nome == 'Fernanda': + self.cor = VERDE + caminho_imagem = os.path.join("Desktop", "CInemon-IP", "sprites", "spr_fernanda_madeiral_2.1.png") + + + self.imagem = pygame.image.load(caminho_imagem) + self.imagem = pygame.transform.scale(self.imagem, (32, 32)) + self.tem_imagem = True + + elif nome == 'Sergio': + self.cor = LARANJA + caminho_imagem = os.path.join("Desktop", "CInemon-IP", "sprites", "spr_sergio_soares.png") + + self.imagem = pygame.image.load(caminho_imagem) + self.imagem = pygame.transform.scale(self.imagem, (32, 32)) + self.tem_imagem = True + + elif nome == 'Ricardo': + self.cor = LARANJA + caminho_imagem = os.path.join("Desktop", "CInemon-IP", "sprites", "spr_ricardo_2.1-export.png") + + + self.imagem = pygame.image.load(caminho_imagem) + self.imagem = pygame.transform.scale(self.imagem, (32, 32)) + self.tem_imagem = True + + + + + + else: + self.cor = CINZA + self.tem_imagem = False + + def desenhar(self, tela, camera, zoom): + + scaled_width = int(32 * zoom) + scaled_height = int(32 * zoom) + pos_x = (self.x - camera.x) * zoom + pos_y = (self.y - camera.y) * zoom + rect_scaled = pygame.Rect(pos_x, pos_y, scaled_width, scaled_height) + + if self.tem_imagem and (self.nome == 'Pedro' or self.nome == 'Fernanda' or self.nome == 'Sergio' or self.nome == 'Fernanda' or self.nome == 'Ricardo'): + + imagem_scaled = pygame.transform.scale(self.imagem, (scaled_width, scaled_height)) + tela.blit(imagem_scaled, (pos_x, pos_y)) + else: + + pygame.draw.rect(tela, self.cor, rect_scaled) + + centro_x = pos_x + scaled_width // 2 + centro_y = pos_y + scaled_height // 4 + raio_cabeca = int(10 * zoom) + pygame.draw.circle(tela, (200, 150, 100), (centro_x, centro_y), raio_cabeca) # Cabeça + pygame.draw.rect(tela, PRETO, + (centro_x - int(10 * zoom), centro_y - int(2.5 * zoom), int(20 * zoom), int(5 * zoom)), 2) # Boca + pygame.draw.rect(tela, PRETO, + (centro_x - int(15 * zoom), centro_y - int(2.5 * zoom), int(5 * zoom), int(5 * zoom)), 2) # Olho esquerdo + pygame.draw.rect(tela, PRETO, + (centro_x + int(10 * zoom), centro_y - int(2.5 * zoom), int(5 * zoom), int(5 * zoom)), 2) # Olho direito \ No newline at end of file diff --git a/CInemon-IP/code/jogo_base.py b/CInemon-IP/code/jogo_base.py new file mode 100644 index 0000000..9d0f12f --- /dev/null +++ b/CInemon-IP/code/jogo_base.py @@ -0,0 +1,540 @@ +import pygame +import sys +import os +import math +import random +from personagem import Personagem +from inimigo import Inimigo +from cinemon import CInemon +from config import LARGURA, ALTURA, SISTEMA_DE_TIPOS +from pytmx.util_pygame import load_pygame +from gema import Gema +from npc import NPC # Importa a nova classe NPC + +class JogoBase: + def __init__(self): + self.estado = "menu" + + # Define o mapa inicial + caminho_mapa = os.path.join("Desktop", "CInemon-IP", "data", "basic.tmx") # Começa com basic.tmx + self.mapa_atual = "basic.tmx" # Mapa atual + self.mapa_anterior = None # Rastreia o mapa de origem + + # Carrega o mapa TMX com tratamento de erro + try: + self.tmx_data = load_pygame(caminho_mapa) + print("Mapa carregado com sucesso:", self.tmx_data.width, "x", self.tmx_data.height) + except Exception as e: + print(f"Erro ao carregar o mapa: {e}") + sys.exit() + + # Agora que tmx_data está definido, inicialize as camadas + self.map_width = self.tmx_data.width * self.tmx_data.tilewidth + self.map_height = self.tmx_data.height * self.tmx_data.tileheight + self.camada_porta = self.tmx_data.get_layer_by_name("porta") if "porta" in [layer.name for layer in self.tmx_data.layers] else None + self.camada_colisao = self.tmx_data.get_layer_by_name("colisao") + self.mapa_colisao = self._criar_mapa_colisao() + + + self.jogador = None + self.pedro = None + self.Sergio = None + self.Fernanda = None + self.Ricardo = None + self.npcs = [] + self.gemas = [] + + self.definir_posicoes() + + self.camera = pygame.Rect(0, 0, LARGURA, ALTURA) + + self.inimigo_atual = None + self.jogador_cinemons = [] + self.cinemons_disponiveis = self.criar_cinemons_disponiveis() + self.cinemons_escolhidos = [] + self.pedro_cinemons = [ + CInemon("Paradoxium", "ESPECIAL", 5, 20, [("Paradoxo Lógico", 30), ("Indução Forte", 40)]) + + ] + self.Sergio_cinemons = [ + CInemon("Redlion", "FOGO", 15, 20, [("Vírus Ígneo", 30), ("Nano Queimadura", 40)]), + CInemon("Serpython", "FOGO", 15, 20, [("Dano Imoral", 30), ("Chama", 40)]) ##### se liga + ] + self.Fernanda_cinemons = [ + CInemon("Butterfault", "PLANTA", 15, 20, [("Dano Imoral", 30), ("Chama", 40)]) + ] + self.Ricardo_cinemons = [ + CInemon("MinerByte", "TERRA", 15, 20, [("Dano Imoral", 30), ("Chama", 40)]) + ] + self.em_batalha = False + self.turno_jogador = True + self.mensagem_atual = "" + self.fase_batalha = 0 + self.acao_selecionada = None + self.cinemon_jogador_atual = None + self.cinemon_inimigo_atual = None + self.rects_cinemon = [] + self.aguardando_espaco = False + self.distancia_batalha = 100 + self.mensagem_dialogo = [] + self.dialogo_atual = 0 + self.batalha_vencida_pedro = False + self.batalha_vencida_Sergio = False + self.batalha_vencida_Fernanda = False + self.batalha_vencida_Ricardo = False + + self.pedacos_cracha = 0 + self.cracha_completo = 0 + + + + self.camada_colisao = self.tmx_data.get_layer_by_name("colisao") + self.mapa_colisao = self._criar_mapa_colisao() + + self.gemas_coletadas = 0 + self.em_dialogo_npc = False # Controla o diálogo com o NPC + self.resposta_npc = None # Armazena a resposta do jogador ('sim' ou 'nao') + + + + def verificar_colisao_porta(self): + """Verifica se o jogador colidiu com uma porta e troca o mapa se necessário""" + if not self.camada_porta: + return False + + # Pega a posição do jogador em tiles + tile_x = int(self.jogador.x // self.tmx_data.tilewidth) + tile_y = int(self.jogador.y // self.tmx_data.tileheight) + + # Verifica os tiles ao redor do jogador + for x, y, tile in self.camada_porta.tiles(): + if tile and tile_x == x and tile_y == y: + if self.cracha_completo == 1: + indice_camada_porta = self.tmx_data.layers.index(self.camada_porta) + propriedades = self.tmx_data.get_tile_properties(x, y, indice_camada_porta) + if propriedades and propriedades.get("porta", False): + destino = propriedades.get("destino", "cin.tmx") # Mapa destino + spawn_x = 450 # Posição de spawn (opcional) + spawn_y = 950 + self.trocar_mapa(destino, spawn_x, spawn_y) + return True + return False + + return False + def trocar_mapa(self, novo_mapa, spawn_x=None, spawn_y=None): + """Troca o mapa atual para um novo mapa TMX e rastreia o mapa anterior""" + # Armazena o mapa atual como anterior antes de trocar + self.mapa_anterior = self.mapa_atual + caminho_mapa = os.path.join("Desktop", "CInemon-IP", "data", novo_mapa) + + try: + self.tmx_data = load_pygame(caminho_mapa) + print(f"Mapa trocado para {novo_mapa} com sucesso: {self.tmx_data.width}x{self.tmx_data.height}") + self.map_width = self.tmx_data.width * self.tmx_data.tilewidth + self.map_height = self.tmx_data.height * self.tmx_data.tileheight + self.mapa_atual = novo_mapa + + # Atualiza as camadas + self.camada_colisao = self.tmx_data.get_layer_by_name("colisao") + self.mapa_colisao = self._criar_mapa_colisao() + self.camada_porta = self.tmx_data.get_layer_by_name("porta") if "porta" in [layer.name for layer in self.tmx_data.layers] else None + + # Reposiciona o jogador + self.jogador.x = spawn_x if spawn_x is not None else self.map_width // 2 + self.jogador.y = spawn_y if spawn_y is not None else self.map_height // 2 + self.jogador.rect.x = self.jogador.x + 8 + self.jogador.rect.y = self.jogador.y + 18 + + # Atualiza a câmera + self._atualizar_camera() + + + + + except Exception as e: + print(f"Erro ao trocar o mapa: {e}") + sys.exit() + + + + + def verificar_colisao_porta_retorno(self): + """Verifica se o jogador quer voltar ao mapa anterior""" + if not self.camada_porta or not self.mapa_anterior: + return False + + tile_x = int(self.jogador.x // self.tmx_data.tilewidth) + tile_y = int(self.jogador.y // self.tmx_data.tileheight) + + for x, y, tile in self.camada_porta.tiles(): + if tile and tile_x == x and tile_y == y: + propriedades = self.tmx_data.get_tile_properties(x, y, self.tmx_data.layers.index(self.camada_porta)) + if propriedades and propriedades.get("porta", False): + spawn_x = propriedades.get("spawn_x", self.map_width // 2) + spawn_y = propriedades.get("spawn_y", self.map_height // 2) + self.trocar_mapa(self.mapa_anterior, spawn_x, spawn_y) + print(f"Porta encontrada! Destino: {propriedades.get('destino')}") + return True + return False + + + + + + + + + + + + def definir_posicoes(self): + self.jogador = Personagem(1695, 710, self.map_width, self.map_height) + self.pedro = Inimigo(450, 140 , 'Pedro') + self.Ricardo = Inimigo(450, 295, 'Ricardo') + self.Sergio = Inimigo(1345, 765, 'Sergio') + self.Fernanda = Inimigo(192, 988, 'Fernanda') + self.npcs = [ + NPC(770, 900, 'Fernanda1', "spr_enfermeira_joy.png"), + + ] + self.gemas = [ + Gema(400, 520), + Gema(450, 100), + Gema(1675, 1045), + Gema(320, 1230), + ] + + def _criar_mapa_colisao(self): + mapa_colisao = [[False for _ in range(self.tmx_data.height)] + for _ in range(self.tmx_data.width)] + if self.camada_colisao: + for x, y, tile in self.camada_colisao.tiles(): + if tile: + mapa_colisao[x][y] = True + return mapa_colisao + + def verificar_colisao_tile(self, x, y): + tile_x = int(x // self.tmx_data.tilewidth) + tile_y = int(y // self.tmx_data.tileheight) + + if 0 <= tile_x < self.tmx_data.width and 0 <= tile_y < self.tmx_data.height: + return self.mapa_colisao[tile_x][tile_y] + return True + + + + + + def verificar_colisao_personagem(self, rect): + pontos = [] + step = 4 + + for x in range(rect.left, rect.right, step): + pontos.append((x, rect.top)) + pontos.append((x, rect.bottom)) + + for y in range(rect.top, rect.bottom, step): + pontos.append((rect.left, y)) + pontos.append((rect.right, y)) + + for px, py in pontos: + if self.verificar_colisao_tile(px, py): + return True + return False + + def criar_cinemons_disponiveis(self): + return [ + CInemon("Firewall", "FOGO", 10, 120, [("Bug Flamejante", 25), ("Firewall", 20)]), + CInemon("Pikacode", "ELETRICO", 10, 110, [("Raio Código", 30), ("Compile Shock", 25)]), + CInemon("Terrabyte", "TERRA", 10, 130, [("Terrabyte", 20), ("Overclock Quake", 35)]), + CInemon("Aqualynx", "AGUA", 10, 125, [("Onda de Dados", 25), ("Debbubble", 30)]), + CInemon("Grasscat", "PLANTA", 10, 115, [("Árvore Binária", 20), ("Trepadeira Viral", 25)]), + CInemon("Aetherbyte", "ELETRICO", 10, 105, [("Nanotrovoada", 30), ("Corrente de Dados", 20)]), + CInemon("Granitex", "TERRA", 10, 135, [("Código Sísmico", 35), ("Data Geodo", 25)]), + CInemon("Bitwhale", "AGUA", 10, 120, [("Bubblesorted", 25), ("Maremoto Quântico", 30)]), + CInemon("Leafbyte", "PLANTA", 10, 125, [("Cipó Cibernético", 20), ("Sistema de Vinhas", 25)]), + CInemon("Emberfang", "FOGO", 10, 110, [("Vírus Ígneo", 30), ("Nano Queimadura", 20)]) + ] + + def verificar_colisao(self): + distancia_pedro = math.sqrt((self.jogador.x - self.pedro.x)**2 + (self.jogador.y - self.pedro.y)**2) + distancia_Sergio = math.sqrt((self.jogador.x - self.Sergio.x)**2 + (self.jogador.y - self.Sergio.y)**2) + distancia_Fernanda = math.sqrt((self.jogador.x - self.Fernanda.x)**2 + (self.jogador.y - self.Fernanda.y)**2) + distancia_Ricardo = math.sqrt((self.jogador.x - self.Ricardo.x)**2 + (self.jogador.y - self.Ricardo.y)**2) + if self.mapa_atual == 'cin.tmx': + if (distancia_pedro < self.distancia_batalha and not self.em_batalha + and len(self.jogador_cinemons) > 0 and not self.batalha_vencida_pedro): + self.inimigo_atual = 'Pedro' + #dialogos pedro + self.mensagem_dialogo = [ + "Pedro Noites: Você ousa se opor à minha revolução?", + "Pedro Noites: Você conseguiu roubar meus experimentos.", + "Pedro Noites: Prepare-se para enfrentar as consequências!", + "Pedro Noites: Você realmente acha que conhece todos os meus truques?", + "Pedro Noites: Prepare-se, porque eu guardei o melhor para o fim.", + "Pedro Noites: Existe um tipo secreto de CInemon, algo que eu desenvolvi nas sombras, longe dos olhos curiosos...", + "Pedro Noites: Um poder que nem mesmo você pode imaginar.", + "Pedro Noites: Me enfrente! E você verá o que acontece quando se desafia o verdadeiro mestre!", + "Pedro Noites: Vamos resolver isso com uma batalha de CInemons!" + ] + self.dialogo_atual = 0 + self.estado = "dialogo" + self.aguardando_espaco = True + if self.mapa_atual == 'basic.tmx': + if (distancia_Sergio < self.distancia_batalha and not self.em_batalha + and len(self.jogador_cinemons) > 0 and not self.batalha_vencida_Sergio): + self.inimigo_atual = 'Sergio' + #dialogos sergio + self.mensagem_dialogo = [ + "Sergio: Como você ousa falar mal de Sergiogol", + "Sergio: Prepare-se para enfrentar as consequências!", + "Sergio: Vamos resolver isso com uma batalha de CInemons!" + ] + self.dialogo_atual = 0 + self.estado = "dialogo" + self.aguardando_espaco = True + + if (distancia_Fernanda < self.distancia_batalha and not self.em_batalha + and len(self.jogador_cinemons) > 0 and not self.batalha_vencida_Fernanda): + self.inimigo_atual = 'Fernanda' + #dialogos Fernanda + self.mensagem_dialogo = [ + "Fernanda: Como você ousa falar durante a chamada!", + "Fernanda: Prepare-se para enfrentar as consequências!", + "Fernanda: Vamos resolver isso com uma batalha de CInemons!" + ] + self.dialogo_atual = 0 + self.estado = "dialogo" + self.aguardando_espaco = True + if (distancia_Ricardo < self.distancia_batalha and not self.em_batalha + and len(self.jogador_cinemons) > 0 and not self.batalha_vencida_Ricardo): + self.inimigo_atual = 'Ricardo' + #dialogos Ricardo + self.mensagem_dialogo = [ + "Ricardo: Como você ousa falar mal do meu Python... Python é MASSA", + "Ricardo: Prepare-se para enfrentar as consequências!", + "Ricardo: Vamos resolver isso com uma batalha de CInemons!" + ] + self.dialogo_atual = 0 + self.estado = "dialogo" + self.aguardando_espaco = True + + def verificar_colisao_barreiras(self): + temp_x, temp_y = self.jogador.x, self.jogador.y + + if (self.jogador.x != self.jogador.x_anterior or + self.jogador.y != self.jogador.y_anterior): + + if self.verificar_colisao_personagem(self.jogador.rect): + self.jogador.x = self.jogador.x_anterior + self.jogador.y = self.jogador.y_anterior + self.jogador.rect.x = self.jogador.x + 8 + self.jogador.rect.y = self.jogador.y + 18 + return True + + return False + + def verificar_coleta_gemas(self): + for gema in self.gemas: + if not gema.collected and self.jogador.rect.colliderect(gema.rect): + gema.collected = True + self.gemas_coletadas += 1 + print(f"Gema coletada! Total: {self.gemas_coletadas}") + + def verificar_interacao_npc(self): + distancia_fernanda = math.sqrt((self.jogador.x - self.fernanda.x)**2 + (self.jogador.y - self.fernanda.y)**2) + if self.mapa_atual == 'basic.tmx': + if distancia_fernanda < 50: # Distância para interação + return True + return False + + def processar_dialogo_npc(self): + if self.jogador.dinheiro >= 50: + self.mensagem_dialogo = [ + "Enfermeira Joy: Quer gastar 50 créditos para reanimar e curar seus CInemons?", + "Pressione S para Sim ou N para Não" + ] + else: + self.mensagem_dialogo = [ + "Enfermeira Joy: Você não tem créditos suficientes!", + "Volte quando tiver pelo menos 50 créditos." + ] + self.em_dialogo_npc = True + self.dialogo_atual = 0 + self.resposta_npc = None + + def responder_dialogo_npc(self, resposta): + if resposta == 'sim' and self.jogador.dinheiro >= 50: + self.jogador.dinheiro -= 50 + for cinemon in self.jogador_cinemons: + cinemon.hp = cinemon.hp_max # Cura total + self.mensagem_dialogo = ["Enfermeira Joy: Seus CInemons estão como novos!"] + self.dialogo_atual = 0 + elif resposta == 'nao': + self.mensagem_dialogo = ["Enfermeira Joy: Tudo bem, volte quando precisar!"] + self.dialogo_atual = 0 + self.resposta_npc = None + + def iniciar_batalha(self): + self.em_batalha = True + self.turno_jogador = True + self.fase_batalha = 0 + self.cinemon_jogador_atual = self.jogador_cinemons[0] + if self.inimigo_atual == 'Pedro': + self.cinemon_inimigo_atual = self.pedro_cinemons[0] + elif self.inimigo_atual == 'Sergio': + self.cinemon_inimigo_atual = self.Sergio_cinemons[0] + elif self.inimigo_atual == 'Fernanda': + self.cinemon_inimigo_atual = self.Fernanda_cinemons[0] + elif self.inimigo_atual == 'Ricardo': + self.cinemon_inimigo_atual = self.Fernanda_cinemons[0] + self.mensagem_atual = f"{self.inimigo_atual} enviou {self.cinemon_inimigo_atual.nome}!" + self.aguardando_espaco = True + + def calcular_dano(self, atacante, defensor, ataque_idx): + ataque_nome, dano_base = atacante.ataques[ataque_idx] + multiplicador = SISTEMA_DE_TIPOS[atacante.tipo].get(defensor.tipo, 1.0) + dano = int(dano_base * multiplicador) + + mensagem = f"{atacante.nome} usou {ataque_nome}!\n" + if multiplicador > 1: + mensagem += "Foi SUPER EFETIVO!\n" + elif multiplicador < 1: + mensagem += "Não foi muito efetivo...\n" + else: + mensagem += "Dano normal.\n" + mensagem += f"Causou {dano} de dano!" + + return dano, mensagem + + def processar_batalha(self): + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_SPACE and self.aguardando_espaco: + self.aguardando_espaco = False + if self.cinemon_inimigo_atual.hp <= 0: + self.proximo_inimigo() + elif self.cinemon_jogador_atual.hp <= 0 and any(c.hp > 0 for c in self.jogador_cinemons): + self.estado = "trocar_cinemon" + elif self.fase_batalha == 1: + self.fase_batalha = 2 + self.turno_jogador = False + self.mensagem_atual = f"{self.cinemon_inimigo_atual.nome} está atacando..." + pygame.time.delay(1000) + self.executar_ataque_inimigo() + elif self.fase_batalha == 3: + self.fase_batalha = 0 + self.turno_jogador = True + if self.fase_batalha == 0 and self.turno_jogador and not self.aguardando_espaco: + if evento.key == pygame.K_1: + self.acao_selecionada = 0 + self.executar_ataque_jogador() + elif evento.key == pygame.K_2: + self.acao_selecionada = 1 + self.executar_ataque_jogador() + elif evento.key == pygame.K_3: + self.estado = "trocar_cinemon" + + def executar_ataque_jogador(self): + if self.acao_selecionada is not None: + dano, mensagem = self.calcular_dano(self.cinemon_jogador_atual, self.cinemon_inimigo_atual, self.acao_selecionada) + self.cinemon_inimigo_atual.hp = max(0, self.cinemon_inimigo_atual.hp - dano) # Limita HP a 0 + self.mensagem_atual = mensagem + self.acao_selecionada = None + self.aguardando_espaco = True + self.fase_batalha = 1 + if self.cinemon_inimigo_atual.hp <= 0: + self.mensagem_atual += f"\n{self.cinemon_inimigo_atual.nome} desmaiou!" + + def executar_ataque_inimigo(self): + dano, mensagem = self.calcular_dano(self.cinemon_inimigo_atual, self.cinemon_jogador_atual, random.randint(0, 1)) + self.cinemon_jogador_atual.hp = max(0, self.cinemon_jogador_atual.hp - dano) # Limita HP a 0 + self.mensagem_atual = mensagem + self.aguardando_espaco = True + self.fase_batalha = 3 + if self.cinemon_jogador_atual.hp <= 0: + self.mensagem_atual += f"\n{self.cinemon_jogador_atual.nome} desmaiou!" + if any(c.hp > 0 for c in self.jogador_cinemons): + self.mensagem_atual += "\nEscolha outro CInemon!" + else: + self.mensagem_atual += "\nVocê perdeu a batalha!" + + def proximo_inimigo(self): + if self.inimigo_atual == 'Pedro': + inimigos = self.pedro_cinemons + elif self.inimigo_atual == 'Sergio': + inimigos = self.Sergio_cinemons + elif self.inimigo_atual == 'Fernanda': + inimigos = self.Fernanda_cinemons + elif self.inimigo_atual == 'Ricardo': + inimigos = self.Ricardo_cinemons + for cinemon in inimigos: + if cinemon.hp > 0: + self.cinemon_inimigo_atual = cinemon + self.mensagem_atual = f"{self.inimigo_atual} enviou {cinemon.nome}!" + self.fase_batalha = 0 + self.turno_jogador = True + self.aguardando_espaco = True + return + self.em_batalha = False + self.estado = "mapa" + if self.inimigo_atual == 'Pedro': + self.batalha_vencida_pedro = True + self.jogador.dinheiro += 100 + elif self.inimigo_atual == 'Sergio': + self.batalha_vencida_Sergio = True + self.jogador.dinheiro += 100 + elif self.inimigo_atual == 'Fernanda': + self.batalha_vencida_Fernanda = True + self.jogador.dinheiro += 100 + elif self.inimigo_atual == 'Ricardo': + self.batalha_vencida_Ricardo = True + self.jogador.dinheiro += 100 + self.mensagem_atual = "Você venceu a batalha!" + self.aguardando_espaco = True + + if self.inimigo_atual == 'Pedro': + self.batalha_vencida_pedro = True + self.jogador.dinheiro += 100 + if self.cracha_completo == 0: + self.pedacos_cracha += 1 + + elif self.inimigo_atual == 'Sergio': + self.batalha_vencida_Sergio = True + self.jogador.dinheiro += 100 + if self.cracha_completo == 0: + self.pedacos_cracha += 1 + + elif self.inimigo_atual == 'Fernanda': + self.batalha_vencida_Fernanda = True + self.jogador.dinheiro += 100 + if self.cracha_completo == 0: + self.pedacos_cracha += 1 + elif self.inimigo_atual == 'Ricardo': + self.batalha_vencida_Ricardo = True + self.jogador.dinheiro += 100 + if self.cracha_completo == 0: + self.pedacos_cracha += 1 + + if self.cracha_completo == 0: + if self.pedacos_cracha >= 3: + self.cracha_completo = 1 + self.pedacos_cracha = 0 + self.mensagem_atual = "Você venceu a batalha e formou o Crachá Completo!" + else: + self.mensagem_atual = f"Você venceu a batalha e ganhou um pedaço de crachá! ({self.pedacos_cracha}/3)" + else: + self.mensagem_atual = "Você venceu a batalha!" + + self.aguardando_espaco = True + + + def _atualizar_camera(self): + x = self.jogador.x - LARGURA // 2 + y = self.jogador.y - ALTURA // 2 + x = max(0, min(x, self.map_width - LARGURA)) + y = max(0, min(y, self.map_height - ALTURA)) + self.camera = pygame.Rect(x, y, LARGURA, ALTURA) \ No newline at end of file diff --git a/CInemon-IP/code/jogo_ui.py b/CInemon-IP/code/jogo_ui.py new file mode 100644 index 0000000..2ce442e --- /dev/null +++ b/CInemon-IP/code/jogo_ui.py @@ -0,0 +1,444 @@ +import pygame +import sys +import os +import math +import random +from jogo_base import JogoBase +from batalha_ui import BatalhaUI +from personagem import Personagem +from inimigo import Inimigo +from cinemon import CInemon +from config import (tela, fonte, fonte_grande, relogio, BRANCO, PRETO, VERMELHO, AZUL, VERDE, + AMARELO, CINZA, ROXO, AZUL_ESCURO, LARGURA, ALTURA, SISTEMA_DE_TIPOS) +from pytmx.util_pygame import load_pygame + +class JogoUI(JogoBase): + def __init__(self): + super().__init__() + self.batalha_ui = BatalhaUI() + self.zoom = 1.9 + self.mostrar_status = False + self.mostrar_mensagem_gemas = False + self.tempo_mensagem_gemas = 0 + self.npc_atual = None # Adicionado para rastrear o NPC atual em interação + self.estado = "menu" # Define o estado inicial como diálogo inicial + self.dialogo_atual = 0 + + + def renderizar_dialogo_inicial(self): + self.mensagem_dialogo = [ + ['Olá, treinador! Eu sou Filipe Milk, estudante do CIn e líder da resistência contra Pedro Noites.'], + ['Ele quer impor sua grade curricular maligna, mas nós temos um plano: os CInemons!'], + ['Criados a partir de amostras roubadas do laboratório secreto de Pedro, essas criaturas digitais são nossa', 'única esperança.'], + ['Sua missão? Reunir os fragmentos do Crachá Perdido do CIn, derrotando os capangas de Pedro que estão', 'espalhados pelo campus.'], + ['Cuidado: após cada batalha, visite o Centro de Cura para recuperar seus CInemons.'], + ['Quando o Crachá estiver completo, vá até a Balsa do CIn e enfrente Pedro Noites em uma batalha épica!'], + ['O futuro do curso está em suas mãos. Você está preparado?'], + ['Uma dica: há gemas espalhadas pelo mapa... dizem que juntando todas seus CInemons ficam mais fortes!']] + + + caminho_imagem_fundo = os.path.join("Desktop", "CInemon-IP", "graphics",'fotos', "fundo.png") + self.imagem_fundo = pygame.image.load(caminho_imagem_fundo) + imagem_fundo_scaled = pygame.transform.smoothscale(self.imagem_fundo,(LARGURA,ALTURA)) + + caminho_imagem = os.path.join("Desktop", "CInemon-IP", "graphics",'fotos', "milk.png") + self.imagem = pygame.image.load(caminho_imagem) + imagem_scaled = pygame.transform.smoothscale(self.imagem, (400, 300)) + + + + tela.blit(imagem_fundo_scaled,(0,0)) + pygame.draw.rect(tela, BRANCO, (50, ALTURA - 200, LARGURA - 100, 150)) + pygame.draw.rect(tela, PRETO, (50, ALTURA - 200, LARGURA - 100, 150), 2) + tela.blit(imagem_scaled,(750,220)) + + if len(self.mensagem_dialogo[self.dialogo_atual]) > 1: + texto = fonte.render(self.mensagem_dialogo[self.dialogo_atual][0], True, PRETO) + texto2 = fonte.render(self.mensagem_dialogo[self.dialogo_atual][1], True, PRETO) + tela.blit(texto, (70, ALTURA - 180)) + tela.blit(texto2, (70, ALTURA - 150)) + self.estado = 'dialogo_inicial' + instrucao = fonte.render("Pressione ESPAÇO para continuar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 100)) + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_SPACE: + if self.dialogo_atual < len(self.mensagem_dialogo) - 1: + self.dialogo_atual += 1 + else: + self.estado = "escolher_cinemon" + self.dialogo_atual = 0 + + else: + texto = fonte.render(self.mensagem_dialogo[self.dialogo_atual][0], True, PRETO) + tela.blit(texto, (70, ALTURA - 180)) + self.estado = 'dialogo_inicial' + instrucao = fonte.render("Pressione ESPAÇO para continuar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 100)) + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_SPACE: + if self.dialogo_atual < len(self.mensagem_dialogo) - 1: + self.dialogo_atual += 1 + else: + self.estado = "escolher_cinemon" + self.dialogo_atual = 0 + + + + + + + def _atualizar_camera(self): + x = self.jogador.x - (LARGURA // 2) / self.zoom + y = self.jogador.y - (ALTURA // 2) / self.zoom + x = max(0, min(x, self.map_width - LARGURA / self.zoom)) + y = max(0, min(y, self.map_height - ALTURA / self.zoom)) + self.camera.topleft = (x, y) + + def ajustar_zoom(self, incremento): + self.zoom += incremento + self.zoom = max(0.5, min(self.zoom, 3.0)) + self._atualizar_camera() + + def menu_principal(self): + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_RETURN: + self.estado = "dialogo_inicial" + if evento.key == pygame.K_ESCAPE: + pygame.quit() + sys.exit() + + tela.fill(VERDE) + titulo = fonte_grande.render("CINEMON IP - A Revolução", True, BRANCO) + subtitulo = fonte.render("Contra a Revolução de Pedro Manhães", True, BRANCO) + instrucao = fonte.render("Pressione ENTER para começar", True, BRANCO) + + tela.blit(titulo, (LARGURA//2 - titulo.get_width()//2, 200)) + tela.blit(subtitulo, (LARGURA//2 - subtitulo.get_width()//2, 300)) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, 400)) + + def tela_escolha_cinemon(self): + tela.fill((240, 240, 240)) + titulo = fonte_grande.render("Escolha 3 CInemons", True, PRETO) + tela.blit(titulo, (LARGURA//2 - titulo.get_width()//2, 50)) + + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.MOUSEBUTTONDOWN: + if evento.button == 1: + for i, rect in enumerate(self.rects_cinemon): + if rect.collidepoint(evento.pos) and len(self.cinemons_escolhidos) < 3: + if i not in self.cinemons_escolhidos: + self.cinemons_escolhidos.append(i) + else: + self.cinemons_escolhidos.remove(i) + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_RETURN and len(self.cinemons_escolhidos) == 3: + self.jogador_cinemons = [self.cinemons_disponiveis[i] for i in self.cinemons_escolhidos] + self.estado = "mapa" + self.cinemon_jogador_atual = self.jogador_cinemons[0] + + self.rects_cinemon = [] + for i, cinemon in enumerate(self.cinemons_disponiveis): + x = 150 + (i % 5) * 180 + y = 150 + (i // 5) * 180 + rect = pygame.Rect(x, y, 150, 150) + self.rects_cinemon.append(rect) + + cor_fundo = ROXO if i in self.cinemons_escolhidos else BRANCO + pygame.draw.rect(tela, cor_fundo, rect) + pygame.draw.rect(tela, PRETO, rect, 2) + + nome = fonte.render(cinemon.nome, True, PRETO) + tipo = fonte.render(cinemon.tipo, True, cinemon.cor) + tela.blit(nome, (x + 75 - nome.get_width()//2, y + 20)) + tela.blit(tipo, (x + 75 - tipo.get_width()//2, y + 50)) + + status = fonte.render(f"HP: {cinemon.hp} ATQ: {cinemon.ataques[0][1]}", True, PRETO) + tela.blit(status, (x + 75 - status.get_width()//2, y + 80)) + + instrucao = fonte.render(f"Selecionados: {len(self.cinemons_escolhidos)}/3 - ENTER para confirmar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 50)) + + def renderizar_dialogo(self): + tela.fill(AZUL_ESCURO) + pygame.draw.rect(tela, BRANCO, (50, ALTURA - 200, LARGURA - 100, 150)) + pygame.draw.rect(tela, PRETO, (50, ALTURA - 200, LARGURA - 100, 150), 2) + + texto = fonte.render(self.mensagem_dialogo[self.dialogo_atual], True, PRETO) + tela.blit(texto, (70, ALTURA - 180)) + + instrucao = fonte.render("Pressione ESPAÇO para continuar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 50)) + + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN and evento.key == pygame.K_SPACE: + self.dialogo_atual += 1 + if self.dialogo_atual >= len(self.mensagem_dialogo): + self.estado = "batalha" + self.iniciar_batalha() + + def renderizar_dialogo_npc(self): + tela.fill(AZUL_ESCURO) + pygame.draw.rect(tela, BRANCO, (50, ALTURA - 200, LARGURA - 100, 150)) + pygame.draw.rect(tela, PRETO, (50, ALTURA - 200, LARGURA - 100, 150), 2) + + texto = fonte.render(self.mensagem_dialogo[self.dialogo_atual], True, PRETO) + tela.blit(texto, (70, ALTURA - 180)) + + if self.dialogo_atual == 1 and self.jogador.dinheiro >= 50: + instrucao = fonte.render("S para Sim | N para Não", True, PRETO) + else: + instrucao = fonte.render("Pressione ESPAÇO para continuar", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 50)) + + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_SPACE: + if self.dialogo_atual < len(self.mensagem_dialogo) - 1: + self.dialogo_atual += 1 + else: + self.em_dialogo_npc = False + self.estado = "mapa" + elif self.dialogo_atual == 1 and self.jogador.dinheiro >= 50: + if evento.key == pygame.K_s: + self.responder_dialogo_npc('sim') + elif evento.key == pygame.K_n: + self.responder_dialogo_npc('nao') + + def mostrar_status_cinemons(self): + tela.fill(AZUL_ESCURO) + pygame.draw.rect(tela, BRANCO, (50, 50, LARGURA - 100, ALTURA - 100)) + pygame.draw.rect(tela, PRETO, (50, 50, LARGURA - 100, ALTURA - 100), 2) + + titulo = fonte_grande.render("Seus CInemons", True, PRETO) + tela.blit(titulo, (LARGURA//2 - titulo.get_width()//2, 70)) + + for i, cinemon in enumerate(self.jogador_cinemons): + y_pos = 150 + i * 100 + nome = fonte.render(f"Nome: {cinemon.nome}", True, PRETO) + hp = fonte.render(f"HP: {cinemon.hp}/{cinemon.hp_max}", True, PRETO if cinemon.hp > 0 else VERMELHO) + status = fonte.render("Vivo" if cinemon.hp > 0 else "Morto", True, VERDE if cinemon.hp > 0 else VERMELHO) + + tela.blit(nome, (100, y_pos)) + tela.blit(hp, (100, y_pos + 30)) + tela.blit(status, (100, y_pos + 60)) + + instrucao = fonte.render("Pressione ESC para voltar ao mapa", True, PRETO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 70)) + + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_ESCAPE: + self.mostrar_status = False + + def verificar_coleta_gemas(self): + for gema in self.gemas: + if not gema.collected and self.jogador.rect.colliderect(gema.rect): + gema.collected = True + self.gemas_coletadas += 1 + print(f"Gema coletada! Total: {self.gemas_coletadas}") + + if self.gemas_coletadas == 4: + for cinemon in self.jogador_cinemons: + cinemon.hp_max += 20 + cinemon.hp = cinemon.hp_max + self.mostrar_mensagem_gemas = True + self.tempo_mensagem_gemas = 180 + + def verificar_interacao_npc(self): + for npc in self.npcs: + distancia = math.sqrt((self.jogador.x - npc.x)**2 + (self.jogador.y - npc.y)**2) + if self.mapa_atual == 'basic.tmx' and distancia < 50: # Distância de interação + self.npc_atual = npc # Armazena o NPC atual interagido + return True + return False + + def processar_dialogo_npc(self): + if not hasattr(self, 'npc_atual') or self.npc_atual is None: + return + if self.jogador.dinheiro >= 50: + self.mensagem_dialogo = [ + f"{self.npc_atual.nome}: Quer gastar 50 créditos para reanimar e curar seus CInemons?", + "Pressione S para Sim ou N para Não" + ] + else: + self.mensagem_dialogo = [ + f"{self.npc_atual.nome}: Você não tem créditos suficientes!", + "Volte quando tiver pelo menos 50 créditos." + ] + self.em_dialogo_npc = True + self.dialogo_atual = 0 + self.resposta_npc = None + + def mapa(self): + for evento in pygame.event.get(): + if evento.type == pygame.QUIT: + pygame.quit() + sys.exit() + if evento.type == pygame.KEYDOWN: + if evento.key == pygame.K_ESCAPE: + self.mostrar_status = not self.mostrar_status + elif evento.key == pygame.K_z: + print(f"Zoom antes: {self.zoom}") + self.ajustar_zoom(0.1) + print(f"Zoom depois: {self.zoom}") + elif evento.key == pygame.K_x: + print(f"Zoom antes: {self.zoom}") + self.ajustar_zoom(-0.1) + print(f"Zoom depois: {self.zoom}") + elif evento.key == pygame.K_SPACE and self.verificar_interacao_npc(): + self.estado = "dialogo_npc" + self.processar_dialogo_npc() + + if self.mostrar_status: + self.mostrar_status_cinemons() + return + + keys = pygame.key.get_pressed() + dx, dy = 0, 0 + if keys[pygame.K_LEFT] or keys[pygame.K_a]: + dx = -1 + if keys[pygame.K_RIGHT] or keys[pygame.K_d]: + dx = 1 + if keys[pygame.K_UP] or keys[pygame.K_w]: + dy = -1 + if keys[pygame.K_DOWN] or keys[pygame.K_s]: + dy = 1 + + self.jogador.mover(dx, dy) + self.verificar_colisao_barreiras() + self.verificar_colisao() + self.verificar_colisao_porta() # Verifica portas de ida + self.verificar_colisao_porta_retorno() # Verifica portas de volta + self.verificar_coleta_gemas() + self._atualizar_camera() + + tela.fill((0, 0, 0)) + mapa_surface = pygame.Surface((self.map_width, self.map_height)) + for layer in self.tmx_data.visible_layers: + if hasattr(layer, 'tiles'): + for x, y, surf in layer.tiles(): + if surf: + mapa_surface.blit(surf, (x * self.tmx_data.tilewidth, y * self.tmx_data.tileheight)) + + scaled_width = int(self.map_width * self.zoom) + scaled_height = int(self.map_height * self.zoom) + mapa_scaled = pygame.transform.scale(mapa_surface, (scaled_width, scaled_height)) + camera_x = int(self.camera.x * self.zoom) + camera_y = int(self.camera.y * self.zoom) + tela.blit(mapa_scaled, (0, 0), (camera_x, camera_y, LARGURA, ALTURA)) + + self.jogador.desenhar(tela, self.camera, self.zoom) + + if self.mapa_atual == 'cin.tmx': + self.pedro.desenhar(tela, self.camera, self.zoom) + elif self.mapa_atual == 'basic.tmx': + self.Sergio.desenhar(tela, self.camera, self.zoom) + self.Fernanda.desenhar(tela, self.camera, self.zoom) + self.Ricardo.desenhar(tela,self.camera, self.zoom) + for npc in self.npcs: # Desenha todos os NPCs + npc.desenhar(tela, self.camera, self.zoom) + + for gema in self.gemas: + if self.mapa_atual == 'basic.tmx': + gema.desenhar(tela, self.camera, self.zoom) + + instrucao = fonte.render("WASD/Setas: Mover | ESC: Status | ESPAÇO: Falar com NPC", True, BRANCO) + tela.blit(instrucao, (LARGURA//2 - instrucao.get_width()//2, ALTURA - 30)) + + if self.cinemon_jogador_atual: + cinemon_info = fonte.render( + f"CInemon atual: {self.cinemon_jogador_atual.nome} (HP: {self.cinemon_jogador_atual.hp}/{self.cinemon_jogador_atual.hp_max})", + True, BRANCO) + tela.blit(cinemon_info, (10, 10)) + + if self.batalha_vencida_pedro: + mensagem = fonte.render("Você já derrotou Pedro Manhães!", True, AZUL) + tela.blit(mensagem, (LARGURA//2 - mensagem.get_width()//2, 50)) + + if self.batalha_vencida_Sergio: + mensagem = fonte.render("Você já derrotou Sergio!", True, VERDE) + tela.blit(mensagem, (LARGURA//2 - mensagem.get_width()//2, 90)) + + if self.batalha_vencida_Fernanda: + mensagem = fonte.render("Você já derrotou Fernanda!", True, VERMELHO) + tela.blit(mensagem, (LARGURA//2 - mensagem.get_width()//2, 110)) + if self.batalha_vencida_Ricardo: + mensagem = fonte.render("Você já derrotou Ricardo!", True, VERMELHO) + tela.blit(mensagem, (LARGURA//2 - mensagem.get_width()//2, 130)) + + texto_dinheiro = fonte.render(f'Você tem {self.jogador.dinheiro} créditos', True, AMARELO) + tela.blit(texto_dinheiro, (10, 40)) + + texto_gemas = fonte.render(f"Gemas: {self.gemas_coletadas}", True, AMARELO) + tela.blit(texto_gemas, (10, 70)) + + # Novo: Exibir pedaços de crachá apenas se o crachá não estiver completo + if self.cracha_completo == 0: + texto_pedacos_cracha = fonte.render(f"Pedaços de Crachá: {self.pedacos_cracha}/3", True, AMARELO) + tela.blit(texto_pedacos_cracha, (10, 100)) + else: + texto_cracha_completo = fonte.render("Crachá Completo", True, AMARELO) + tela.blit(texto_cracha_completo, (10, 100)) + + if self.gemas_coletadas >= 4 and self.mostrar_mensagem_gemas: + mensagem = fonte_grande.render("Parabéns! Você pegou as 4 gemas!", True, VERDE) + mensagem2 = fonte.render("Seus CInemons ganharam 20 de HP máximo!", True, VERDE) + tela.blit(mensagem, (LARGURA//2 - mensagem.get_width()//2, ALTURA//2 - 50)) + tela.blit(mensagem2, (LARGURA//2 - mensagem2.get_width()//2, ALTURA//2 + 10)) + self.tempo_mensagem_gemas -= 1 + if self.tempo_mensagem_gemas <= 0: + self.mostrar_mensagem_gemas = False + + def rodar(self): + while True: + if self.estado == "menu": + self.menu_principal() + elif self.estado == "escolher_cinemon": + self.tela_escolha_cinemon() + elif self.estado == "mapa": + self.mapa() + elif self.estado == "batalha": + self.batalha_ui.processar_batalha(self) + self.batalha_ui.renderizar_batalha(self) + elif self.estado == "trocar_cinemon": + self.batalha_ui.tela_trocar_cinemon(self) + elif self.estado == 'dialogo_inicial': + self.renderizar_dialogo_inicial() + elif self.estado == "dialogo": + self.renderizar_dialogo() + elif self.estado == "dialogo_npc": + self.renderizar_dialogo_npc() + + pygame.display.flip() + relogio.tick(60) + +def main(): + jogo = JogoUI() + jogo.rodar() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/CInemon-IP/code/main.py b/CInemon-IP/code/main.py new file mode 100644 index 0000000..79cf994 --- /dev/null +++ b/CInemon-IP/code/main.py @@ -0,0 +1,11 @@ +import sys +from jogo_ui import JogoUI +from config import (tela, fonte, fonte_grande, relogio, BRANCO, PRETO, VERMELHO, AZUL, VERDE, AMARELO, + CINZA, ROXO, LARANJA, MARROM, AZUL_ESCURO, LARGURA, ALTURA, SISTEMA_DE_TIPOS) + +def main(): + jogo = JogoUI() + jogo.rodar() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/CInemon-IP/code/npc.py b/CInemon-IP/code/npc.py new file mode 100644 index 0000000..e74f93d --- /dev/null +++ b/CInemon-IP/code/npc.py @@ -0,0 +1,33 @@ +import pygame +import os + +class NPC: + def __init__(self, x, y, nome, sprite_file="spr_fernanda_madeiral.png"): + self.x = x + self.y = y + self.nome = nome + self.width = 32 + self.height = 32 + self.rect = pygame.Rect(self.x + 8, self.y + 18, 24, 36) # Hitbox ajustada + + try: + sprite_path = os.path.join("Desktop", "CInemon-IP", "sprites", sprite_file) + self.sprite = pygame.image.load(sprite_path).convert_alpha() + self.sprite = pygame.transform.scale(self.sprite, (self.width, self.height)) + except Exception as e: + print(f"Erro ao carregar sprite do NPC {self.nome}: {e}") + self.sprite = None + self.cor = (0, 255, 255) # Ciano como fallback + + def desenhar(self, tela, camera, zoom): + pos_x = (self.x - camera.x) * zoom + pos_y = (self.y - camera.y) * zoom + scaled_width = int(self.width * zoom) + scaled_height = int(self.height * zoom) + + if self.sprite: + sprite_scaled = pygame.transform.scale(self.sprite, (scaled_width, scaled_height)) + tela.blit(sprite_scaled, (pos_x, pos_y)) + else: + rect_scaled = pygame.Rect(pos_x, pos_y, scaled_width, scaled_height) + pygame.draw.rect(tela, self.cor, rect_scaled) \ No newline at end of file diff --git a/CInemon-IP/code/personagem.py b/CInemon-IP/code/personagem.py new file mode 100644 index 0000000..f7675fb --- /dev/null +++ b/CInemon-IP/code/personagem.py @@ -0,0 +1,109 @@ +import pygame +import os +from config import BRANCO, PRETO, VERMELHO, AZUL, VERDE, AMARELO, CINZA, ROXO, LARANJA, MARROM, AZUL_ESCURO + +class Personagem: + def __init__(self, x, y, map_width, map_height): + self.x = x + self.y = y + self.x_anterior = x + self.y_anterior = y + self.velocidade = 5 + self.map_width = map_width + self.map_height = map_height + self.hitbox_width = 8 + self.hitbox_height = 8 + self.rect = pygame.Rect(self.x + 16, self.y + 26, self.hitbox_width, self.hitbox_height) + self.direcao = "baixo" + self.dinheiro = 0 + + # Variáveis para animação + self.frame = 0 # Índice do frame atual + self.anim_speed = 0.2 # Velocidade da animação (quanto menor, mais rápido) + self.anim_counter = 0 # Contador para controlar a troca de frames + + # Dicionário com sprites para cada direção + self.sprites = { + "direita": [ + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_direita.png")).convert_alpha(), + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_andar_direita.png")).convert_alpha() + ], + "esquerda": [ + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_esquerda.png")).convert_alpha(), + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_andar_esquerda.png")).convert_alpha() + ], + "baixo": [ + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_frente.png")).convert_alpha(), + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_andar_baixo.png")).convert_alpha() + ], + "cima": [ + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_costas.png")).convert_alpha(), + pygame.image.load(os.path.join("Desktop", "CInemon-IP", "sprites", "Protagonista", "protagonista_andar_cima.png")).convert_alpha() + ] + } + + # Redimensiona todos os sprites para 32x32 + for direcao in self.sprites: + for i in range(len(self.sprites[direcao])): + self.sprites[direcao][i] = pygame.transform.scale(self.sprites[direcao][i], (32, 32)) + + # Sprite inicial + self.sprite_atual = self.sprites["baixo"][0] + + def mover(self, dx, dy): + self.x_anterior = self.x + self.y_anterior = self.y + + self.x += dx * self.velocidade + self.y += dy * self.velocidade + + # Atualiza direção + if dx > 0: + self.direcao = "direita" + elif dx < 0: + self.direcao = "esquerda" + elif dy > 0: + self.direcao = "baixo" + elif dy < 0: + self.direcao = "cima" + + # Limites do mapa + self.x = max(0, min(self.map_width - 40, self.x)) + self.y = max(0, min(self.map_height - 60, self.y)) + + # Atualiza o hitbox + self.rect.x = self.x + 16 + self.rect.y = self.y + 26 + + # Animação: se está se movendo, alterna os frames + if dx != 0 or dy != 0: + self.anim_counter += self.anim_speed + if self.anim_counter >= 1: + self.anim_counter = 0 + self.frame = (self.frame + 1) % 2 # Alterna entre 0 (parado) e 1 (andando) + self.sprite_atual = self.sprites[self.direcao][self.frame] + else: + # Se parado, usa o sprite "parado" (frame 0) + self.frame = 0 + self.anim_counter = 0 + self.sprite_atual = self.sprites[self.direcao][0] + + def desenhar(self, tela, camera, zoom): + pos_x = (self.x - camera.x) * zoom + pos_y = (self.y - camera.y) * zoom + + scaled_width = int(20 * zoom) + scaled_height = int(30 * zoom) + sprite_scaled = pygame.transform.scale(self.sprite_atual, (scaled_width, scaled_height)) + + # Inverte o sprite para a esquerda + + + tela.blit(sprite_scaled, (pos_x, pos_y)) + + # Desenha o hitbox (opcional, para debug) + hitbox_pos_x = (self.rect.x - camera.x) * zoom + hitbox_pos_y = (self.rect.y - camera.y) * zoom + hitbox_scaled_width = int(self.hitbox_width * zoom) + hitbox_scaled_height = int(self.hitbox_height * zoom) + hitbox_scaled = pygame.Rect(hitbox_pos_x, hitbox_pos_y, hitbox_scaled_width, hitbox_scaled_height) \ No newline at end of file diff --git a/CInemon-IP/data/Objects.tsx b/CInemon-IP/data/Objects.tsx new file mode 100644 index 0000000..2b3626e --- /dev/null +++ b/CInemon-IP/data/Objects.tsx @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CInemon-IP/data/basic.tmx b/CInemon-IP/data/basic.tmx new file mode 100644 index 0000000..efa3fa8 --- /dev/null +++ b/CInemon-IP/data/basic.tmx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1670,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1670,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1670,1728,1728,1728,1670,1728,1728,1670,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1670,1670,1670,1670,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1728,1728,1728,1728,1728,1728,1670,1670,1670,1670,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1728,1715,1716,1717,1728,1728,1728,1670,1670,1670,1670,1728,1728,1728,1728,1715,1716,1717,1728,1728,1728,1728,1728,1728,1728,1728,1728, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1704,1743,1744,1745,1704,1704,1704,1670,1670,1670,1670,1704,1704,1704,1704,1743,1744,1745,1704,1704,1704,1704,1704,1704,1704,1704,1704, +4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,4595,1362,1362,1362,1362,1728,1728,1728,1728,1728,1728,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,1258,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1362,1362,1362,1362,1728,1728,1728,1728,1659,1728,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,1286,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1362,1362,1362,1362,1647,1659,1659,1659,1659,1659,1659,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,1284,1285,1286,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1362,1362,1362,1362,1728,1728,1728,1728,1728,1728,1728,1728,1728,1704,4707,1334,4707,4707,4707,4707,4707,1312,1313,1314,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,3818,1728,3818,3818,3818,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,1340,1341,1342,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,3818,1728,1728,4099,1728,1728,1728,3818,1728,1728,1728,1728,1728,1728,1728,1728,1728,1362,1362,1362,1362,0,0,0,0,0,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,1368,1369,1370,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,3818,1728,1728,4099,4099,1728,1728,3818,3818,3818,3818,0,1728,1728,1728,1728,1728,1362,1362,1362,0,0,0,0,0,0,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,1728,3818,4728,4728,4099,4099,4728,3818,3818,3818,3826,3818,0,1728,1728,1728,1728,1728,1362,4595,4595,4637,0,4595,4595,4595,1362,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,3818,3818,3833,3833,4728,4099,4099,3818,3818,3818,3826,3818,0,1728,1728,1728,1728,1728,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,3818,3818,3818,3818,3818,3818,3818,3818,3818,3818,3826,3826,0,1728,1728,1728,1728,1728,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1728,1728,1728,1704,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,3818,1728,3826,3826,3818,3818,3818,3818,3818,3818,3826,3818,4729,1728,1728,1728,1728,1728,1362,1362,1362,1362,1362,1362,1362,1362,1362,1362,1728,1728,1728,4727,1501,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1362,1362,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,3818,1728,1728,3818,3818,3818,3826,3818,3826,3818,3818,3818,4729,1728,1728,1728,1728,1728,1362,1362,1362,4595,1362,4595,1362,1362,1362,1362,1728,1728,1728,4727,1534,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1362,1362,1362,1362,1362,4707,4707,4707,4707,4707,4707, +1728,1728,3826,1728,3818,3818,3818,3818,1728,3826,1728,3818,3818,3818,4729,1728,1728,1728,1728,1728,1362,1362,1362,4595,1362,4595,1362,1362,1362,1362,1728,1728,1728,4727,1563,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3826,1728,3818,3818,1728,1728,3826,1728,3818,1728,3818,3818,1728,1708,1708,1708,1708,1708,1708,1362,1362,1362,1362,1362,4595,1362,1362,1362,1362,1708,1728,1728,4727,1591,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,3818,3818,3818,3818,1728,1728,1728,3826,1728,3818,3818,1728,1728,1708,1728,1728,1728,1708,1728,1728,1728,1728,5457,1728,1728,1728,1728,0,1708,1728,1728,4707,4707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,1728,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,1728,1728,3826,3818,1728,1728,1728,3818,3818,3818,1728,1728,1728,1728,1728,1728,1728,1708,1708,1708,1708,1708,5457,1708,1708,1708,1708,1708,1708,1728,1728,4707,1707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,3818,1728,3818,3818,1728,1708,1708,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,0,1728,4707,1707,1707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1728,1708,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1707,1707,1707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1728,1728,1728,1728,1728,1708,1708,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1707,1707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707, +1728,1708,1708,1708,1708,1708,1708,1728,1728,4728,4728,4728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,1728,4707,1707,1707,1707,1707,1707,1707,1707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707,4707 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1631,1714,0,0,1686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5834,5835,5836,5837,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,616,617,618,0,0,0,0,0,0,0,0,0,0,1631,1714,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5842,5843,5844,5845,0,0,0,0,0,0,0,5834,5835,5836,5837,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,647,648,649,0,0,0,0,0,0,0,0,0,0,0,1631,0,0,0,0,1686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5842,5843,5844,5845,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,678,679,680,0,0,0,0,0,0,0,0,0,0,0,1629,1714,0,1686,0,0,1741,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5850,5851,5852,5853,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,709,710,711,0,0,0,0,0,0,0,0,0,0,0,0,1631,0,0,0,0,1769,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5858,5859,5860,5861,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,740,741,742,0,0,0,0,0,0,0,0,0,0,0,0,1631,1714,0,1741,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,768,0,0,0,772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1631,0,1769,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,799,800,801,802,803,804,805,806,0,0,0,0,0,0,0,0,0,0,0,1631,0,0,0,1686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,826,827,0,829,830,831,832,833,834,835,836,837,0,839,840,841,842,0,0,0,0,0,0,1631,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5850,5851,5852,5853, +0,0,0,0,0,0,857,858,0,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,0,0,0,0,0,1629,0,1686,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5858,5859,5860,5861, +0,0,0,0,0,0,0,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,0,0,0,0,0,1631,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5818,5819,5820,5821,0,0,0,0, +0,0,0,0,0,0,0,0,0,922,923,924,925,926,927,928,929,930,931,0,933,934,935,0,0,0,0,0,0,1631,1714,0,0,1741,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5826,5827,5828,5829,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,955,956,957,0,0,0,0,0,0,0,965,966,0,0,0,0,0,0,0,1631,0,0,1769,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,996,997,998,0,0,0,0,0,0,1631,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,1028,1029,0,0,0,0,0,0,1631,0,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5818,5819,5820,5821, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1058,1059,1060,1061,1062,0,0,0,0,1631,1631,1714,0,0,0,0,0,1686,1686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5826,5827,5828,5829, +0,0,0,0,0,0,0,0,0,0,0,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,0,0,0,0,0,0,0,1631,1631,0,0,0,0,0,0,1686,0,0,0,0,0,1686,0,1686,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,0,0,0,0,0,0,0,1631,1631,0,0,0,0,1772,0,0,0,0,0,0,0,0,1686,0,0,0,0,0,0,0,1772,0,0,1772,0,1772, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1151,1152,0,0,0,0,0,0,0,0,1631,1631,4719,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720,4720, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1182,1183,0,0,0,0,0,0,0,0,1631,1631,0,0,0,0,0,0,0,0,1258,1258,1258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1603,1603,1603,1603,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1603,5585,3866,3866,5585,1603,0,0,0,0,0,0,1630,1634,0,0,0,0,0,0,0,0,1258,1258,1258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1631,1631,1631,1631,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1630,5593,1362,3948,5593,1631,0,0,0,0,0,0,1634,0,0,0,0,0,0,0,0,0,1256,1257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1659,1659,1659,1659,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1658,5686,1362,1362,5686,1659,0,0,0,0,0,0,1662,0,0,0,0,0,0,0,0,0,1284,1285,1202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,4672,4720,4672,4672,4720,4720,0,0,0,0,0,0,0,0,0,0,0,5694,3822,3822,5694,4729,0,0,0,0,0,0,0,0,0,1305,0,1307,1308,0,0,0,4042,4043,4044,0,0,0,0,0,0,0,0,0,1324,1325,1326,3712,0,0,0, +0,0,0,4090,4099,4091,4091,4091,4099,3835,4720,4721,0,0,0,0,0,0,0,0,3822,3957,3822,3822,5271,5272,5273,5263,5263,5263,5773,5774,0,0,1333,1334,1335,1336,0,0,0,4050,4051,4052,0,0,0,0,0,0,0,0,0,0,0,1354,1355,0,0,0, +0,4720,4727,7359,4099,4099,4099,4099,4099,3833,4100,4720,4720,4720,4721,0,0,0,0,0,3822,3822,3958,3822,4595,1362,1362,4595,4595,4595,5781,5782,0,0,1361,1362,1363,1364,0,0,0,4058,4059,4060,1371,1372,1373,1374,1375,1376,0,0,0,0,0,1382,1383,0,0,0, +0,3818,3818,7367,4099,4099,4099,4099,4099,4099,4100,0,3679,3680,3681,0,0,0,0,0,3822,3958,3822,1362,4595,1362,1362,4155,4155,4595,5789,5790,0,0,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,0,0,0,0,0,1410,1411,0,0,0, +0,3862,3818,4098,4099,4099,5288,5289,4099,4099,4100,5292,3814,3818,0,0,0,0,0,0,3958,3822,3822,4039,4040,4041,1362,0,4595,4595,5797,5798,0,0,1417,0,0,0,1421,1422,0,1340,1341,1426,0,0,0,0,1431,1432,0,0,0,0,0,1438,1439,0,0,0, +0,3862,3862,4098,4099,4099,4099,4099,4099,4100,5292,5292,3814,5292,0,0,0,0,0,0,3822,3822,5296,4047,4048,4049,1362,1362,1362,5286,0,0,0,0,1445,0,0,0,1449,1450,0,1368,1369,1454,0,0,0,0,1459,1460,0,0,0,0,0,1466,1467,0,0,0, +0,3828,3828,4106,4107,4107,4107,4107,4107,4108,3868,3868,3814,3814,4729,0,0,0,0,4727,1362,1362,5304,4055,4056,4057,0,3830,1362,1362,4729,0,0,4727,1473,0,0,0,1477,1478,0,1396,1397,1482,0,0,0,0,1487,1488,1489,1490,1491,1492,1493,1494,1495,0,0,0, +0,3828,3828,3818,3866,4042,4043,4044,5292,5292,3818,5292,3868,3814,5903,5904,5906,5907,5908,5909,5910,1362,1362,3851,3851,3830,0,0,5903,5907,5907,5907,5909,5910,0,1502,1503,1504,1505,1506,1507,1508,1509,1510,0,0,0,0,1515,1516,1517,1518,1519,1520,1521,1522,1523,0,0,0, +0,3828,3828,3819,3819,4050,4051,4052,3868,3818,3868,3818,3818,3818,5911,5912,5915,5914,5914,5917,5918,3828,3814,3828,3851,3830,3830,0,5911,5914,5914,5914,5917,5918,1362,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,0,0,0,0,0,0,0,1547,1548,1549,1550,0,0,0,0, +0,3818,3820,3819,3828,4058,4059,4060,3818,3868,3818,3854,3854,3818,5911,5912,5914,5915,5916,5917,5918,3828,3828,3828,3814,3851,3830,3830,5911,5914,5913,5914,5917,5918,0,1558,1559,1560,1561,1562,1563,1564,1565,1566,0,0,0,0,0,0,0,0,1575,0,0,0,0,0,0,0, +0,3866,3820,3828,3828,3818,3818,3826,3818,3818,3818,3854,3854,3818,4729,0,0,0,0,4727,1362,3814,3828,3828,3851,3851,3830,3830,0,0,4729,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1600,1601,1602,1603,1604,1605,0,0,0,0,0, +0,3818,3828,3828,3866,3828,3818,3818,3826,3868,3818,3854,3854,3818,0,0,0,0,0,0,0,0,0,0,5692,0,0,0,4736,4736,4737,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3828,3819,3819,3819,3828,4736,0,4736,5453,5453,5453,4736,0,0,0,0,0,0,0,0,0,0,0,5700,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3828,3819,3828,3828,3818,0,0,0,5461,5461,5461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,4736,4736,4736,4736,0,0,0,0,5461,5461,5461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,5809,5810,0,0,0,0,5461,5461,5461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5818,5819,5820,5821,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,4727,5461,5461,5461,4729,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5826,5827,5828,5829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + +572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +603,604,605,606,607,608,609,610,611,612,613,614,615,0,0,0,619,620,621,622,623,624,625,626,627,628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +634,635,636,637,638,639,640,641,642,643,644,645,646,0,0,0,650,651,652,653,654,655,656,657,658,659,660,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +665,666,667,668,669,670,671,672,673,674,675,676,677,0,0,0,681,682,683,684,685,686,687,688,689,690,691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +696,697,698,699,700,701,702,703,704,705,706,707,708,0,0,0,712,713,714,715,716,717,718,719,720,721,722,723,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +727,728,729,730,731,732,733,734,735,736,737,738,739,0,0,0,743,744,745,746,747,748,749,750,751,752,753,754,0,0,0,0,0,0,0,0,0,1715,1716,1717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +758,759,760,761,762,763,764,765,766,767,0,769,770,771,0,773,774,775,776,777,778,779,780,781,782,783,784,785,786,0,0,0,0,0,0,0,0,1743,1744,1745,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +789,790,791,792,793,794,795,796,797,798,0,0,0,0,0,0,0,0,807,808,809,810,811,812,813,814,815,816,817,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +820,821,822,823,824,825,0,0,828,0,0,0,0,0,0,0,0,0,838,0,0,0,0,843,844,845,846,847,848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +851,852,853,854,855,856,0,0,859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,875,876,877,878,879,0,0,0,0,0,0,0,0,0,0,0,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +882,883,884,885,886,887,888,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,906,907,908,909,910,0,0,0,0,0,0,0,0,1768,0,0,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +913,914,915,916,917,918,919,920,921,0,0,0,0,0,0,0,0,0,0,932,0,0,0,936,937,938,939,940,941,0,0,0,0,0,0,0,0,1796,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +944,945,946,947,948,949,950,951,952,953,954,0,0,0,958,959,960,961,962,963,964,0,0,967,968,969,970,971,972,973,0,0,0,0,0,0,0,1715,1716,1717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,0,0,0,999,1000,1001,1002,1003,1004,0,0,0,0,0,0,0,1743,1744,1745,0,1715,1716,1717,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,0,0,0,1030,1031,1032,1033,1034,1035,0,0,0,0,0,0,0,0,0,0,0,1743,1744,1745,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,0,0,0,0,0,1063,1064,1065,1066,0,0,0,0,0,0,0,0,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,0,0,0,0,0,0,0,0,0,0,0,0,0,1092,1093,1094,1095,1096,1097,1098,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1123,1124,1125,1126,1127,1128,1129,0,0,4671,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672,4672, +1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,0,0,1153,1154,1155,1156,1157,1158,1159,1160,0,0,4679,1295,1295,1295,1295,1295,1295,1295,1333,1333,1333,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295,1295, +1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,0,0,1184,1185,1186,1187,1188,1189,1190,1191,0,0,4727,1193,1194,1195,1196,1197,1198,1199,0,0,0,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1217,1217,1218,1219, +0,0,0,0,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,1603,4727,0,0,0,0,4729,1604,1604,1604,1604,1604,1604,0,0,4727,1221,1222,1223,1224,1225,1226,1227,0,0,0,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1245,1245,1246,1247, +0,0,0,0,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,1630,4727,0,0,0,0,4729,1630,1630,1630,1630,1631,1631,0,0,4727,1249,1250,1251,1252,1253,1254,1255,0,0,0,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1273,1273,1274,1275, +0,0,0,0,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,1659,4727,0,0,0,0,4729,0,0,0,0,0,0,0,0,4727,1277,1278,1279,1280,1281,1282,1283,0,0,0,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1301,1301,1302,1303, +0,0,4719,7343,7344,7345,4672,7347,7348,7349,7350,0,3655,3656,3657,0,0,0,0,4727,0,0,0,0,4720,4720,4720,4720,4720,4720,4721,0,0,4727,0,0,0,0,1309,1310,1311,0,0,0,1315,1316,1317,1318,1319,1320,1321,1322,1323,0,0,0,3742,3712,3712,3712, +0,0,4727,7351,7352,7353,0,7355,7356,7357,7358,0,3663,3664,3665,0,1715,1716,1717,4727,0,0,0,0,0,0,7473,7474,7475,7476,4729,0,0,4727,0,0,0,0,1337,1338,1339,0,0,0,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,0,0,1356,1357,1358, +4719,5191,5192,5193,7360,7361,0,7363,7364,7365,7366,4729,3671,3672,3673,0,1743,1744,1745,4727,0,0,0,6135,6136,6137,7481,7482,7483,7484,4729,0,0,4727,0,0,0,0,1365,1366,1367,0,0,0,1371,1372,0,0,0,0,1377,1378,1379,1380,1381,0,0,1384,1385,1386, +4727,5199,5200,5201,7368,7369,0,7371,7372,7373,7374,0,0,0,4729,0,0,0,0,4727,0,0,0,6143,6144,6145,7489,7490,7491,7492,4729,0,0,4727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1405,1406,1407,1408,1409,0,0,1412,1413,1414, +4727,5207,5208,5209,0,0,5288,5289,5271,5272,5273,0,0,0,4729,1715,1716,1717,0,4727,0,0,0,6151,6152,6153,7497,7498,7499,7500,4729,0,0,4727,0,1418,1419,1420,0,0,1423,1424,1425,0,1427,1428,1429,1430,0,0,1433,1434,1435,1436,1437,1438,0,1440,1441,1442, +4727,0,0,0,0,0,5286,5286,0,0,0,0,0,0,4729,1743,1744,1745,0,4727,0,0,0,6159,6160,5661,5661,7506,7507,7508,4729,0,0,4727,0,1446,1447,1448,0,0,1451,1452,1453,0,1455,1456,1457,1458,0,0,1461,1462,1463,1464,1465,1466,0,1468,1469,1470, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,5895,5896,5898,5899,5900,5901,5902,0,0,0,0,0,0,0,5895,5896,5897,5898,5899,5902,0,1474,1475,1476,0,0,1479,1480,1481,0,1483,1484,1485,1486,0,0,0,0,0,0,0,1494,0,1496,1497,1498, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1511,1512,1513,1514,0,0,0,0,0,0,0,0,0,1524,1525,1526, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1540,1541,1542,1543,1544,1545,1546,0,0,0,0,1551,1552,1553,1554, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1567,1568,1569,1570,1571,1572,1573,1574,0,1576,1577,1578,1579,1580,1581,1582, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,5919,5920,5922,5923,5924,5925,5926,0,0,0,5691,0,0,0,5919,5920,5921,5922,5923,5926,0,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,0,0,0,0,0,0,1606,1607,1608,1609,1610, +4727,0,0,0,0,0,0,0,0,0,0,0,0,0,4729,0,0,0,0,4735,0,0,0,0,5699,4736,4736,4736,0,0,0,1666,0,1612,1613,0,0,0,0,0,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638, +4727,0,0,0,0,0,4729,4736,5452,0,0,0,5454,4736,4737,0,0,0,0,0,5455,0,0,0,5529,0,0,0,0,0,0,1694,0,1640,1715,1716,1717,0,0,0,1647,1710,1711,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666, +4727,0,0,0,0,0,4729,0,5460,0,0,0,5462,0,0,0,0,0,5773,5774,5463,5464,5464,5464,5537,0,0,0,0,0,0,1722,1710,1711,1743,1744,1745,1710,1711,0,1675,1738,1739,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694, +4735,5799,5800,5801,5802,4736,4737,0,5460,0,0,0,5462,0,0,0,0,0,5781,5782,0,0,0,0,0,1694,0,1722,0,0,0,1750,1738,1739,1697,0,0,1738,1739,0,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722, +0,5807,5808,0,0,0,0,1772,5460,0,0,0,5462,1767,1768,1711,0,1739,5789,5790,0,0,0,0,0,1722,0,1750,0,1715,1716,1717,0,0,1710,1711,0,0,1715,1716,1717,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750, +0,0,0,0,0,0,0,0,5460,0,0,0,5462,1795,1796,1739,0,0,5797,5798,0,0,0,0,0,1750,0,0,0,1743,1744,1745,0,1752,1738,1739,0,0,1743,1744,1745,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5455,5456,5456,5456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5455,5456,5456,5456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5463,5464,5464,5464,5465,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5471,0,0,0,5473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + diff --git a/CInemon-IP/data/basic.tmx.tiled-project b/CInemon-IP/data/basic.tmx.tiled-project new file mode 100644 index 0000000..953ae34 --- /dev/null +++ b/CInemon-IP/data/basic.tmx.tiled-project @@ -0,0 +1,14 @@ +{ + "automappingRulesFile": "", + "commands": [ + ], + "compatibilityVersion": 1100, + "extensionsPath": "extensions", + "folders": [ + "." + ], + "properties": [ + ], + "propertyTypes": [ + ] +} diff --git a/CInemon-IP/data/basic.tmx.tiled-session b/CInemon-IP/data/basic.tmx.tiled-session new file mode 100644 index 0000000..65234ae --- /dev/null +++ b/CInemon-IP/data/basic.tmx.tiled-session @@ -0,0 +1,239 @@ +{ + "Map/SizeTest": { + "height": 4300, + "width": 2 + }, + "activeFile": "C:/Users/PC/Downloads/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx", + "expandedProjectPaths": [ + "." + ], + "file.lastUsedOpenFilter": "Todos os Ficheiros (*)", + "fileStates": { + "": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "#arroz": { + "dynamicWrapping": true + }, + "#castle": { + "dynamicWrapping": false, + "scaleInDock": 1 + }, + "#objetos": { + "dynamicWrapping": true, + "scaleInDock": 1 + }, + "#tree_1": { + "scaleInDock": 1 + }, + "#tree_2": { + "scaleInDock": 1 + }, + "#tree_3": { + "scaleInDock": 1 + }, + "C:/Users/Matheus/Desktop/Gabrielzao/data/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx": { + "dynamicWrapping": true, + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/CINEMON/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/Objects.tsx": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (1).tmx": { + "scale": 0.45718749999999997, + "selectedLayer": 0, + "viewCenter": { + "x": 807.1086807928914, + "y": 872.7272727272727 + } + }, + "C:/Users/PC/Downloads/basic (1).tmx#fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (1).tmx#iki_town__tile_test__by_kingtapir_ddhlarg-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (1).tmx#my_first_map__by_midnitez_remix_d6nwagg-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (1).tmx#pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (1).tmx#tiles": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (2).tmx": { + "scale": 0.2414583333333333, + "selectedLayer": 0, + "viewCenter": { + "x": 960.8283002588439, + "y": 639.8619499568593 + } + }, + "C:/Users/PC/Downloads/basic (2).tmx#fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (2).tmx#iki_town__tile_test__by_kingtapir_ddhlarg-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (2).tmx#my_first_map__by_midnitez_remix_d6nwagg-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (2).tmx#pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic (2).tmx#tiles": { + "scaleInDock": 1 + }, + "C:/Users/PC/Downloads/basic.tmx": { + "scale": 0.45718749999999997, + "selectedLayer": 0, + "viewCenter": { + "x": 960.2187286397814, + "y": 951.4695830485305 + } + }, + "C:/Users/PC/Downloads/basic.tmx#fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/basic.tmx#iki_town__tile_test__by_kingtapir_ddhlarg-fullview": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/basic.tmx#my_first_map__by_midnitez_remix_d6nwagg-fullview": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/basic.tmx#pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/basic.tmx#tiles": { + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx": { + "dynamicWrapping": false, + "scaleInDock": 1, + "scaleInEditor": 1 + }, + "C:/Users/PC/Downloads/tiles padrao.tsx": { + "scaleInDock": 1 + }, + "Objects.tsx": { + "dynamicWrapping": true, + "scaleInDock": 0.25 + }, + "arroz.tmx": { + "scale": 0.15734374999999998, + "selectedLayer": 0, + "viewCenter": { + "x": 514.7964250248265, + "y": 508.4409136047666 + } + }, + "basic.tmx": { + "scale": 1, + "selectedLayer": 3, + "viewCenter": { + "x": 863, + "y": 928 + } + }, + "basic.tmx#fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre": { + "dynamicWrapping": false, + "scaleInDock": 0.75 + }, + "basic.tmx#iki_town__tile_test__by_kingtapir_ddhlarg-fullview": { + "dynamicWrapping": false, + "scaleInDock": 1 + }, + "basic.tmx#my_first_map__by_midnitez_remix_d6nwagg-fullview": { + "scaleInDock": 1 + }, + "basic.tmx#neo_islands_template_city_by_fallen_angel_snoops_d3hbnjc-375w": { + "scaleInDock": 1 + }, + "basic.tmx#pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview": { + "dynamicWrapping": false, + "scaleInDock": 1.5 + }, + "basic.tmx#pokemon_style_monster_mmorpg_map_volcano_cave_2f_by_monstermmorpg_d4ah3ga (1)": { + "dynamicWrapping": false + }, + "basic.tmx#pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf": { + "dynamicWrapping": false, + "scaleInDock": 1 + }, + "basic.tmx#tiles": { + "dynamicWrapping": false, + "scaleInDock": 1 + }, + "cin.tmx": { + "scale": 0.8349609375, + "selectedLayer": 0, + "viewCenter": { + "x": 511.40116959064324, + "y": 353.3099415204679 + } + }, + "objetos.tmx": { + "scale": 0.66796875, + "selectedLayer": 0, + "viewCenter": { + "x": 401.2163742690059, + "y": 639.2514619883041 + } + }, + "objetos.tmx#arroz": { + "dynamicWrapping": true, + "scaleInEditor": 0.25 + }, + "pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx": { + "dynamicWrapping": false, + "scaleInDock": 1.5, + "scaleInEditor": 1 + }, + "tiles padrao.tsx": { + "dynamicWrapping": false, + "scaleInDock": 0.0625, + "scaleInEditor": 0.25 + } + }, + "last.externalTilesetPath": "C:/Users/PC/Desktop/CInemon-IP/data", + "last.imagePath": "C:/Users/PC/Desktop/CInemon-IP/graphics/tilesets", + "map.height": 100, + "map.lastUsedFormat": "tmx", + "map.tileHeight": 128, + "map.tileWidth": 128, + "map.width": 100, + "openFiles": [ + "basic.tmx", + "C:/Users/PC/Downloads/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx" + ], + "project": "basic.tmx.tiled-project", + "property.type": "int", + "recentFiles": [ + "basic.tmx", + "C:/Users/PC/Downloads/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx", + "cin.tmx", + "C:/Users/PC/Downloads/basic (1).tmx", + "arroz.tmx", + "tiles padrao.tsx", + "C:/Users/PC/Downloads/basic (2).tmx", + "pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx", + "objetos.tmx" + ], + "tileset.embedInMap": true, + "tileset.lastUsedFormat": "tsx", + "tileset.tileSize": { + "height": 32, + "width": 32 + }, + "tileset.type": 0 +} diff --git a/CInemon-IP/data/cin.tmx b/CInemon-IP/data/cin.tmx new file mode 100644 index 0000000..23e0538 --- /dev/null +++ b/CInemon-IP/data/cin.tmx @@ -0,0 +1,148 @@ + + + + + +820,820,820,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +820,820,820,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +820,820,820,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +820,820,820,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +707,707,707,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +707,707,707,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +707,707,707,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +707,707,707,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +707,707,707,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +820,820,820,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,2090,820,820,820,820, +820,820,820,1914,1914,1914,1914,2090,2090,2090,1914,1914,1914,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,1914,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,1914,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,1914,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,746,746,746,707,707,707,707,707,707,707,707,707,707,746,746,746,746,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,820,820,820,820, +820,820,820,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,1914,820,820,820,820, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137, +2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,746,746,746,746,746,746,746,746,746,746,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137,2137 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2047,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2038,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2047,0,0,0,0,0,0,2684356598,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356598,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,612,0,0, +0,0,614,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,612,0, +0,0,0,614,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,612,0,0,0,0, +0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,613,0,0,0,0,0,0,614,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,612,0,0,0,0,614,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +2418,2418,1610614498,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,2419,1610614655,2418,2418,2418,2418, +2684356985,2684356985,0,0,0,0,0,0,0,0,0,0,0,0,2419,2419,2419,2419,0,0,2419,0,0,0,2419,0,0,2419,2684356985,2684356985,2684356985,2684356985, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1073743743,1073743743,1073743743,0,2147485664,0,0,0,2147485664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,2684356979,2418,2418,2418,2418, +0,2684356965,0,536872928,2024,3758098400,0,536872928,2024,3758098400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356985,2684356985,2684356985,2684356985, +2405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2407,0,0,0,0, +0,2684356964,0,0,2016,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,2419,0,0,0,0,0, +0,0,0,536872928,2024,3758098400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,0,0,2684356979,0,0,0,0, +2418,2418,0,0,0,0,0,0,2419,0,1919,1919,1919,1919,1919,1919,1919,1919,1919,1919,1919,1919,1919,1919,0,0,0,0,2418,2418,2418,2418, +2684356985,2684356985,536872831,1610615155,0,0,2406,2684356479,0,0,0,0,0,0,0,0,0,0,0,0,2684356540,0,0,0,1610615155,0,0,0,2684356985,2684356985,2684356985,2684356985, +0,0,536872831,0,0,0,2684356979,2684356479,0,1610614716,0,0,0,0,0,0,0,0,0,0,2684356540,0,0,0,0,0,0,2684356979,0,0,0,0, +0,0,536872831,1610615155,0,0,0,2684356479,0,1610614716,0,0,0,0,0,0,0,0,0,0,2684356540,0,0,0,1610615155,0,0,0,0,0,0,0, +1514,1514,536872831,0,0,0,2684356979,2684356479,0,1610614716,0,2275,0,0,0,0,0,0,0,2275,2684356540,0,0,0,0,0,0,2684356979,0,0,0,0, +2418,2418,0,1610615155,0,0,0,2684356479,0,1610614716,0,2283,0,0,0,0,0,0,0,2283,2684356540,0,0,0,1610615155,0,0,0,1073743743,1073743743,1073743743,1073743743, +2532,2533,536872831,0,0,0,0,2684356479,0,1610614716,0,0,0,0,0,0,0,0,2684356596,0,2684356540,0,0,0,0,0,0,2684356978,0,0,0,0, +2540,2541,536872831,0,0,0,2684356978,2684356479,0,1610614716,0,2278,0,0,0,0,0,0,2684356597,2278,2684356540,0,0,0,1610615154,0,0,0,0,2684356985,2684356985,2684356985, +2532,2533,536872831,0,0,0,0,2684356479,0,1610614716,0,2286,0,0,0,0,0,0,0,2286,2684356540,0,0,0,0,0,0,0,0,2684356985,2684356985,2684356985, +2540,2541,536872831,1610615154,0,0,0,2684356479,0,1610614716,0,0,0,0,0,0,0,0,0,0,2684356540,0,0,0,2406,0,0,2684356978,0,2684356985,2684356985,2684356985, +1073743743,1073743743,1073743743,0,0,0,2684356978,2684356479,3221227890,1610614716,0,0,0,0,0,0,0,0,0,0,2684356540,0,3221227890,0,0,0,0,0,0,2684356985,2684356985,2684356985, +0,0,536872831,0,0,0,0,1073743743,1073743743,1610614723,0,0,0,0,0,0,0,0,0,0,2684356550,1073743743,1073743743,1073743743,0,0,0,0,0,2684356985,2684356985,2684356985, +0,0,536872831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356985,2684356985,2684356985, +0,0,536872831,1610615154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356985,2684356985,2684356985, +0,0,0,0,0,0,0,0,0,1610614655,0,0,0,0,0,0,0,0,0,1610614655,0,0,0,0,0,0,0,0,1073743743,1073743743,1073743743,1073743743, +702,702,702,702,702,702,702,702,702,1610614655,0,0,0,0,0,0,0,0,0,1610614655,702,702,702,702,702,702,702,702,1937,1938,1939,0, +0,0,0,0,0,0,0,0,0,0,2397,0,2147486045,0,0,0,2396,2397,0,2398,0,0,0,0,0,0,0,0,1945,1946,1947,0, +2042,2043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2042,2043,0,0,0,1953,1954,1955,0, +2050,2051,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2050,2051,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2042,2043,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2406,0,0,0,0,0,0,2050,2051,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743,1073743743, +0,0,1610614498,0,2419,0,0,2419,0,0,0,2419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +0,0,1610614498,0,0,0,0,0,0,2419,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,2419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,1730,1730,1730,1730, +1073743743,1073743743,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,536872831,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,2419,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,2419,0,0,2419,0,0,0,0,536872831,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +1730,1730,1730,0,0,0,0,0,0,0,0,0,2419,0,0,2419,2419,2419,0,0,0,0,0,0,0,0,0,536872831,1730,1730,1730,1730, +0,0,1610614466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,0,0,0,385,386,0,2023,2023,0,2020,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,0,0,0,393,394,0,0,0,71,72,0,1610615154,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,3758098403,0,0,2009,147,148,0,0,79,80,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +1762,1762,1762,0,0,0,0,0,0,0,2684356578,0,0,2010,155,156,0,0,0,0,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,2684356579,0,0,2009,163,164,0,0,0,0,0,0,0,2684356978,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,3221227890,0,3758098403,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,2684356578,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,2684356579,0,0,0,0,0,0,0,0,0,0,1610615154,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +1073743743,1073743743,1610614655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684356479,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +0,0,1610614655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536872831,0,0,0,0, +3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,0,0,4649,4650,4651,4652,0,0,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,3221227391,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,4657,4658,4659,4660,0,0,1610614655,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,436,437,438,0,0,0,0,0,0,4665,4666,4667,4668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,444,445,446,0,0,0,0,0,0,4673,4674,4675,4676,0,0,0,436,437,438,0,0,0,0,0,0,0,0,0, +0,0,0,0,452,453,454,0,0,0,0,0,0,0,0,0,0,0,0,0,444,445,446,0,0,0,0,0,0,0,0,0, +0,0,0,0,460,461,462,0,0,0,0,0,0,0,0,0,0,0,0,0,452,453,454,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,460,461,462,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + diff --git a/CInemon-IP/data/objetos.tmx b/CInemon-IP/data/objetos.tmx new file mode 100644 index 0000000..31909e2 --- /dev/null +++ b/CInemon-IP/data/objetos.tmx @@ -0,0 +1,19 @@ + + + + + + +59,59,59,59,59,59,59,59,59,0, +59,59,59,59,59,59,59,59,59,59, +59,33,33,59,33,59,33,59,59,59, +59,33,59,59,33,59,33,59,59,59, +59,33,59,59,33,59,33,59,59,59, +59,33,33,59,33,33,33,59,59,59, +59,59,59,59,59,59,59,59,59,59, +59,59,59,59,59,59,59,59,59,59, +59,59,59,59,59,59,59,59,59,59, +59,59,59,59,59,59,59,59,59,59 + + + diff --git a/CInemon-IP/data/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx b/CInemon-IP/data/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx new file mode 100644 index 0000000..61b5a54 --- /dev/null +++ b/CInemon-IP/data/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.tsx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CInemon-IP/data/tiles padrao.tsx b/CInemon-IP/data/tiles padrao.tsx new file mode 100644 index 0000000..7774fbb --- /dev/null +++ b/CInemon-IP/data/tiles padrao.tsx @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/CInemon-IP/graphics/Fotos/fundo.png b/CInemon-IP/graphics/Fotos/fundo.png new file mode 100644 index 0000000..f3d6989 Binary files /dev/null and b/CInemon-IP/graphics/Fotos/fundo.png differ diff --git a/CInemon-IP/graphics/Fotos/milk.png b/CInemon-IP/graphics/Fotos/milk.png new file mode 100644 index 0000000..d10dd2b Binary files /dev/null and b/CInemon-IP/graphics/Fotos/milk.png differ diff --git a/CInemon-IP/graphics/objects/castle.png b/CInemon-IP/graphics/objects/castle.png new file mode 100644 index 0000000..3ce538a Binary files /dev/null and b/CInemon-IP/graphics/objects/castle.png differ diff --git a/CInemon-IP/graphics/objects/mushroom_1.png b/CInemon-IP/graphics/objects/mushroom_1.png new file mode 100644 index 0000000..3066e55 Binary files /dev/null and b/CInemon-IP/graphics/objects/mushroom_1.png differ diff --git a/CInemon-IP/graphics/objects/mushroom_2.png b/CInemon-IP/graphics/objects/mushroom_2.png new file mode 100644 index 0000000..38b33c1 Binary files /dev/null and b/CInemon-IP/graphics/objects/mushroom_2.png differ diff --git a/CInemon-IP/graphics/objects/mushroom_3.png b/CInemon-IP/graphics/objects/mushroom_3.png new file mode 100644 index 0000000..b6d3640 Binary files /dev/null and b/CInemon-IP/graphics/objects/mushroom_3.png differ diff --git a/CInemon-IP/graphics/objects/tower.png b/CInemon-IP/graphics/objects/tower.png new file mode 100644 index 0000000..3ff1ebc Binary files /dev/null and b/CInemon-IP/graphics/objects/tower.png differ diff --git a/CInemon-IP/graphics/objects/tree_1.png b/CInemon-IP/graphics/objects/tree_1.png new file mode 100644 index 0000000..1d6ffec Binary files /dev/null and b/CInemon-IP/graphics/objects/tree_1.png differ diff --git a/CInemon-IP/graphics/objects/tree_2.png b/CInemon-IP/graphics/objects/tree_2.png new file mode 100644 index 0000000..84b1bb1 Binary files /dev/null and b/CInemon-IP/graphics/objects/tree_2.png differ diff --git a/CInemon-IP/graphics/objects/tree_3.png b/CInemon-IP/graphics/objects/tree_3.png new file mode 100644 index 0000000..78aae38 Binary files /dev/null and b/CInemon-IP/graphics/objects/tree_3.png differ diff --git a/CInemon-IP/graphics/tilesets/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg b/CInemon-IP/graphics/tilesets/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg new file mode 100644 index 0000000..bfec14f Binary files /dev/null and b/CInemon-IP/graphics/tilesets/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg differ diff --git a/CInemon-IP/graphics/tilesets/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg b/CInemon-IP/graphics/tilesets/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg new file mode 100644 index 0000000..1e7a02a Binary files /dev/null and b/CInemon-IP/graphics/tilesets/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg differ diff --git a/CInemon-IP/graphics/tilesets/my_first_map__by_midnitez_remix_d6nwagg-fullview.jpg b/CInemon-IP/graphics/tilesets/my_first_map__by_midnitez_remix_d6nwagg-fullview.jpg new file mode 100644 index 0000000..9f09898 Binary files /dev/null and b/CInemon-IP/graphics/tilesets/my_first_map__by_midnitez_remix_d6nwagg-fullview.jpg differ diff --git a/CInemon-IP/graphics/tilesets/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg b/CInemon-IP/graphics/tilesets/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg new file mode 100644 index 0000000..517c1f4 Binary files /dev/null and b/CInemon-IP/graphics/tilesets/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg differ diff --git a/CInemon-IP/graphics/tilesets/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.png b/CInemon-IP/graphics/tilesets/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.png new file mode 100644 index 0000000..6fdac4f Binary files /dev/null and b/CInemon-IP/graphics/tilesets/pokemon_tileset_from_public_tiles_32x32_by_chaoticcherrycake_dab2byf.png differ diff --git a/CInemon-IP/graphics/tilesets/terrain_corner.png b/CInemon-IP/graphics/tilesets/terrain_corner.png new file mode 100644 index 0000000..72ed700 Binary files /dev/null and b/CInemon-IP/graphics/tilesets/terrain_corner.png differ diff --git a/CInemon-IP/graphics/tilesets/terrain_edges.png b/CInemon-IP/graphics/tilesets/terrain_edges.png new file mode 100644 index 0000000..1afc0c8 Binary files /dev/null and b/CInemon-IP/graphics/tilesets/terrain_edges.png differ diff --git a/CInemon-IP/graphics/tilesets/tiles.png b/CInemon-IP/graphics/tilesets/tiles.png new file mode 100644 index 0000000..0592430 Binary files /dev/null and b/CInemon-IP/graphics/tilesets/tiles.png differ diff --git a/CInemon-IP/maps tiled/Screenshot_7.png b/CInemon-IP/maps tiled/Screenshot_7.png new file mode 100644 index 0000000..c4e1ccd Binary files /dev/null and b/CInemon-IP/maps tiled/Screenshot_7.png differ diff --git a/CInemon-IP/maps tiled/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg b/CInemon-IP/maps tiled/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg new file mode 100644 index 0000000..ee3ae07 Binary files /dev/null and b/CInemon-IP/maps tiled/fakemon_region_starting_town___nuevo_town_by_stopdrawingcartoons_dek37jy-pre.jpg differ diff --git a/CInemon-IP/maps tiled/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg b/CInemon-IP/maps tiled/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg new file mode 100644 index 0000000..b2a3c9a Binary files /dev/null and b/CInemon-IP/maps tiled/iki_town__tile_test__by_kingtapir_ddhlarg-fullview.jpg differ diff --git a/CInemon-IP/maps tiled/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg b/CInemon-IP/maps tiled/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg new file mode 100644 index 0000000..2853572 Binary files /dev/null and b/CInemon-IP/maps tiled/pokemon_bw3__nuvema_town_by_midnitez_remix_d9wq577-fullview.jpg differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_andar_baixo.png b/CInemon-IP/sprites/Protagonista/protagonista_andar_baixo.png new file mode 100644 index 0000000..1eb3cfe Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_andar_baixo.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_andar_cima.png b/CInemon-IP/sprites/Protagonista/protagonista_andar_cima.png new file mode 100644 index 0000000..d9113ad Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_andar_cima.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_andar_direita.png b/CInemon-IP/sprites/Protagonista/protagonista_andar_direita.png new file mode 100644 index 0000000..c0847b5 Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_andar_direita.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_andar_esquerda.png b/CInemon-IP/sprites/Protagonista/protagonista_andar_esquerda.png new file mode 100644 index 0000000..1175fe6 Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_andar_esquerda.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_costas.png b/CInemon-IP/sprites/Protagonista/protagonista_costas.png new file mode 100644 index 0000000..bce2b0f Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_costas.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_direita.png b/CInemon-IP/sprites/Protagonista/protagonista_direita.png new file mode 100644 index 0000000..1b3cf1b Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_direita.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_esquerda.png b/CInemon-IP/sprites/Protagonista/protagonista_esquerda.png new file mode 100644 index 0000000..a4fec96 Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_esquerda.png differ diff --git a/CInemon-IP/sprites/Protagonista/protagonista_frente.png b/CInemon-IP/sprites/Protagonista/protagonista_frente.png new file mode 100644 index 0000000..d6b02e1 Binary files /dev/null and b/CInemon-IP/sprites/Protagonista/protagonista_frente.png differ diff --git a/CInemon-IP/sprites/spr_cracha_coletavel.png b/CInemon-IP/sprites/spr_cracha_coletavel.png new file mode 100644 index 0000000..906b1f7 Binary files /dev/null and b/CInemon-IP/sprites/spr_cracha_coletavel.png differ diff --git a/CInemon-IP/sprites/spr_enfermeira_joy.png b/CInemon-IP/sprites/spr_enfermeira_joy.png new file mode 100644 index 0000000..b0d2a27 Binary files /dev/null and b/CInemon-IP/sprites/spr_enfermeira_joy.png differ diff --git a/CInemon-IP/sprites/spr_fernanda_madeiral_2.1.png b/CInemon-IP/sprites/spr_fernanda_madeiral_2.1.png new file mode 100644 index 0000000..ea8929b Binary files /dev/null and b/CInemon-IP/sprites/spr_fernanda_madeiral_2.1.png differ diff --git "a/CInemon-IP/sprites/spr_gema_colet\303\241vel_2.png" "b/CInemon-IP/sprites/spr_gema_colet\303\241vel_2.png" new file mode 100644 index 0000000..c1980c7 Binary files /dev/null and "b/CInemon-IP/sprites/spr_gema_colet\303\241vel_2.png" differ diff --git a/CInemon-IP/sprites/spr_pedro_manhaes2.png b/CInemon-IP/sprites/spr_pedro_manhaes2.png new file mode 100644 index 0000000..bce5af2 Binary files /dev/null and b/CInemon-IP/sprites/spr_pedro_manhaes2.png differ diff --git a/CInemon-IP/sprites/spr_ricardo_2.1-export.png b/CInemon-IP/sprites/spr_ricardo_2.1-export.png new file mode 100644 index 0000000..9a86eac Binary files /dev/null and b/CInemon-IP/sprites/spr_ricardo_2.1-export.png differ diff --git a/CInemon-IP/sprites/spr_sergio_soares.png b/CInemon-IP/sprites/spr_sergio_soares.png new file mode 100644 index 0000000..0d57042 Binary files /dev/null and b/CInemon-IP/sprites/spr_sergio_soares.png differ