diff --git a/game/Banco/Instancia.py b/game/Banco/Instancia.py index 4d24a71..6e1b600 100644 --- a/game/Banco/Instancia.py +++ b/game/Banco/Instancia.py @@ -107,3 +107,37 @@ def consultarInstanciaEspecifica(self, personagem: int, numero: int): finally: cursor.close() + def atualizarVidaInstanciaID(self, IDinstancia: int, numeroInstancia: int, novaVida: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"""UPDATE instancia SET vida = '{novaVida}' WHERE personagem = '{IDinstancia}' AND numero = '{numeroInstancia}'; """) + linhas_afetadas = cursor.rowcount + conexao.commit() + + if linhas_afetadas == 0: + print("Não há dados na tabela que correspondam à condição de atualização.") + except psycopg2.Error as e: + print("Erro ao atualizar a vida da instância:", e) + finally: + cursor.close() + + + + def getInstanciaID(self, personagem: int, numero: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT * FROM instancia WHERE personagem = '{personagem}' AND numero = '{numero}';") + consulta = cursor.fetchall() + + if not consulta: + print("Não há nenhuma instancia com essas caracteristicas\n") + else: + return consulta + + except psycopg2.Error as e: + print("Não foi possivel fazer essa consulta") + + finally: + cursor.close() diff --git a/game/Banco/InstanciaItem.py b/game/Banco/InstanciaItem.py index 5747460..de07395 100644 --- a/game/Banco/InstanciaItem.py +++ b/game/Banco/InstanciaItem.py @@ -38,7 +38,24 @@ def consultarInstanciaItemPK(self, IDitem:int, numeroItem:int): print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") finally: cursor.close() - + + def consultarInstanciaItemJogador(self, Personagem:int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT I.IDitem FROM Item I JOIN InstanciaItem Ia ON I.IDitem = Ia.IDitem" + f"JOIN Inventario Inv ON Ia.IDinv = Inv.IDinv" + f"JOIN Personagem P ON Inv.Personagem = P.IDpersonagem" + f"WHERE P.IDpersonagem = {Personagem};") + consulta = cursor.fetchall() + if not consulta: + print("Não foi há instanciaItem cadastrados\n") + else: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() def consultarInstanciaItem(self): try: conexao = self.db.conexao diff --git a/game/Banco/Inventario.py b/game/Banco/Inventario.py index 3b9e47d..a12187d 100644 --- a/game/Banco/Inventario.py +++ b/game/Banco/Inventario.py @@ -56,4 +56,95 @@ def consultarInventarioEspecifico(self, IDinv:int): print("Erro ao consultar Inventario", e) finally: cursor.close() + + def consultarInventarioArmasID(self,personagem: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT ia.iditem, ar.nome, ar.dano " + f"FROM instanciaitem ia " + f"JOIN inventario i ON ia.idinv = i.idinv " + f"JOIN armamento ar ON ia.iditem = ar.item " + f"WHERE i.personagem = '{personagem}';") + consulta = cursor.fetchall() + if consulta: + for x in consulta: + print(x) + else: + print("Parece que você não tem itens do tipo armamento\n") + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + def getInventarioArmasID(self,personagem: int, IdArma: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT ia.iditem, ar.nome, ar.dano " + f"FROM instanciaitem ia " + f"JOIN inventario i ON ia.idinv = i.idinv " + f"JOIN armamento ar ON ia.iditem = ar.item " + f"WHERE i.personagem = '{personagem}';") + consulta = cursor.fetchall() + if consulta: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def consultarInventarioConsumiveisID(self,personagem: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT ia.iditem, po.nome, po.cura, po.usos " + f"FROM instanciaitem ia " + f"JOIN inventario i ON ia.idinv = i.idinv " + f"JOIN consumivel po ON ia.iditem = po.item " + f"WHERE i.personagem = '{personagem}';") + consulta = cursor.fetchall() + if consulta: + for x in consulta: + print(x) + else: + print("Parece que você não tem itens do tipo Consumivel\n") + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def getInventarioConsumiveisID(self,personagem: int, IdPocao: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT ia.iditem, po.nome, po.cura, po.usos " + f"FROM instanciaitem ia " + f"JOIN inventario i ON ia.idinv = i.idinv " + f"JOIN consumivel po ON ia.iditem = po.item " + f"WHERE i.personagem = '{personagem}' AND po.item = '{IdPocao}';") + consulta = cursor.fetchall() + if consulta: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def verItensInventario(self, IDpersonagem:int): + try: + conexao=self.db.conexao + cursor=conexao.cursor() + cursor.execute(f"""SELECT I.IDitem FROM Item I """ + f"""JOIN InstanciaItem Ia ON I.IDitem = Ia.IDitem """ + f"""JOIN Inventario Inv ON Ia.IDinv = Inv.IDinv """ + f"""JOIN Personagem P ON Inv.Personagem = P.IDpersonagem """ # Adicionando um espaço aqui + f"""WHERE P.IDpersonagem = {IDpersonagem};""") + conexao.commit() + resultado=cursor.fetchall() + if resultado: + print(resultado[0]) + except psycopg2.Error as e: + print("Erro ao consultar Inventario", e) + finally: + cursor.close() diff --git a/game/Banco/Npc.py b/game/Banco/Npc.py index 06f072d..ac23e71 100644 --- a/game/Banco/Npc.py +++ b/game/Banco/Npc.py @@ -63,6 +63,21 @@ def deletarNPC(self, IDpersonagem:int): print("Erro ao deletar NPC", e ) finally: cursor.close() + + def getNPCID(self,Personagem:int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"""Select * from NPC where personagem = {Personagem}; """) + consultarNPC = cursor.fetchall() + if(consultarNPC == []): + print("Não existe nenhum NPC com esse ID ") + else: + return consultarNPC + except psycopg2.Error as e: + print("Erro ao cosultar os NPC's", e ) + finally: + cursor.close() \ No newline at end of file diff --git a/game/Banco/Pc.py b/game/Banco/Pc.py index d7717ef..7e836bd 100644 --- a/game/Banco/Pc.py +++ b/game/Banco/Pc.py @@ -16,7 +16,6 @@ def criarPc(self, personagem:int, nome, cursor.execute(f"""insert into pc values({personagem},'{nome}',{xp}, {vida},{lvl},{dinheiro},'{especie}',{forca},{defesa},{local});""") conexao.commit() - return print("PC criado com sucesso") except psycopg2.Error as e: print("Erro ao inserir PC", e) finally: @@ -38,21 +37,32 @@ def consultarPC(self): finally: cursor.close() - def consultarPCID(self,Personagem:int): + def consultarPCNome(self, Nome:str): try: conexao = self.db.conexao cursor = conexao.cursor() - cursor.execute(f"""Select * from PC where personagem = {Personagem}; """) - consultarNPC = cursor.fetchall() - if(consultarNPC == []): - print("Não existe nenhum PC com esse ID ") - else: - for x in consultarNPC: - print(x) + cursor.execute(f"""Select * from PC where nome = '{Nome}'; """) + consultarPC = cursor.fetchall() + return consultarPC except psycopg2.Error as e: print("Erro ao cosultar os PC's", e ) finally: cursor.close() + + def atualizarVidaPCID(self,personagem: int, novaVida: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"""UPDATE pc SET vida = {novaVida} where personagem = '{personagem}'; """) + linhas_afetadas = cursor.rowcount + conexao.commit() + + if linhas_afetadas == 0: + print("Não há dados na tabela que correspondam à condição de atualização.") + except psycopg2.Error as e: + print("Erro ao atualizar a vida do pc:", e) + finally: + cursor.close() def getPC(self,Personagem:int): try: @@ -70,29 +80,39 @@ def getPC(self,Personagem:int): cursor.close() - def deletarNPC(self, IDpersonagem:int): + def deletarPC(self, IDpersonagem:int): try: conexao = self.db.conexao cursor = conexao.cursor() - cursor.execute(f"""delete from npc where personagem = {IDpersonagem}""") + cursor.execute(f"""delete from pc where personagem = {IDpersonagem}""") conexao.commit() except psycopg2.Error as e: - print("Erro ao deletar NPC", e ) + print("Erro ao deletar PC", e ) + finally: + cursor.close() + + + def updatePc(self,Personagem:int, Nome:set): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"""update pc set nome = '{Nome}' where personagem = {Personagem};""") + conexao.commit() + except psycopg2.Error as e: + print("Erro ao atualizar pc's ", e ) finally: cursor.close() + + + def updatePcLocal(self,Personagem:int, Local:int): try: conexao = self.db.conexao cursor = conexao.cursor() - cursor.execute(f"""update pc set local = {Local} where personagem = {Personagem}; """) - consultarNPC = cursor.fetchall() - if(consultarNPC == []): - print("Não existe nenhum PC com esse ID ") - else: - return consultarNPC + cursor.execute(f"""update pc set local = {Local} where personagem = {Personagem};""") + conexao.commit() except psycopg2.Error as e: print("Erro ao cosultar os PC's", e ) finally: cursor.close() - \ No newline at end of file diff --git a/game/Banco/Personagem.py b/game/Banco/Personagem.py index aa00200..fb5e991 100644 --- a/game/Banco/Personagem.py +++ b/game/Banco/Personagem.py @@ -13,7 +13,6 @@ def criarPersonagem(self, IDpersonagem:int,ATC:bool): cursor = conexao.cursor() cursor.execute(f"""insert into personagem values({IDpersonagem},{ATC});""") insercaoPersonagem = conexao.commit() - return print("Personagem criado com sucesso") except psycopg2.Error as e: print("Erro ao inserir personagem", e) finally: @@ -61,5 +60,7 @@ def deletarPersonagem(self, IDpersonagem:int): finally: cursor.close() + + \ No newline at end of file diff --git a/game/Banco/PossuiHab.py b/game/Banco/PossuiHab.py new file mode 100644 index 0000000..3981ee3 --- /dev/null +++ b/game/Banco/PossuiHab.py @@ -0,0 +1,102 @@ +import psycopg2 +from .Database import Database +from .Habilidade import Habilidade +from .Personagem import Personagem + +class PossuiHab: + def __init__(self): + self.db = Database() + pass + + def inserirPossuiHab(self, personagem:int, habilidade:int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"""Insert into possuihab values({personagem},{habilidade});""") + inserirDropItem = conexao.commit() + except psycopg2.IntegrityError as e: + print(f"Erro ao inserir possuihab", e) + finally: + cursor.close() + + def consultarPossuiHabPK(self,personagem:int, habilidade:int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT * FROM possuihab WHERE personagem = {personagem} and habilidade = {habilidade};") + consulta = cursor.fetchall() + + if not consulta: + print("Não foi há possuiHab cadastrados\n") + else: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def getPossuiHabPK(self,personagem: int, idescolhido: int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT IDhabilidade, Nome, Tempo_de_recarga, Dano " + f"FROM Habilidade " + f"INNER JOIN PossuiHab ON Habilidade = IDhabilidade " + f"WHERE Personagem = {personagem} AND idhabilidade = {idescolhido};") + consulta = cursor.fetchall() + if consulta: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def consultarPossuiHab(self): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT * FROM possuiHab ;") + consulta = cursor.fetchall() + + if not consulta: + print("Não foi há itens cadastrados\n") + else: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + def deletarPossuiHabilidaed(self, personagem:int, habilidade:int): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"DELETE FROM possuiHabilidade WHERE personagem = {personagem} and habilidade = {habilidade};") + delecaoFazMissao = conexao.commit() + return print("PossuiHab deletado com sucesso!\n") + + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a delecao. Erro: {e}\n") + + finally: + cursor.close() + + def consultarPossuiHabPersonagem(self,nome:str): + try: + conexao = self.db.conexao + cursor = conexao.cursor() + cursor.execute(f"SELECT IDhabilidade, Nome, Tempo_de_recarga, Dano " + f"FROM Habilidade " + f"INNER JOIN PossuiHab ON Habilidade = IDhabilidade " + f"WHERE Personagem = '{nome}';") + consulta = cursor.fetchall() + if not consulta: + print("Não foi há possuiHab cadastrados\n") + else: + return consulta + except psycopg2.IntegrityError as e: + print(f"Encontramos problemas ao fazer a consulta. Erro: {e}\n") + finally: + cursor.close() + + \ No newline at end of file diff --git a/game/Banco/__init__.py b/game/Banco/__init__.py index 4c7a7cb..bce9385 100644 --- a/game/Banco/__init__.py +++ b/game/Banco/__init__.py @@ -8,6 +8,7 @@ from .FazMissao import * from .Habilidade import * from .Instancia import * +from .InstanciaItem import * from .InstanciaItem import * from .Inventario import * from .Item import * @@ -17,7 +18,8 @@ from .Mundo import * from .Npc import * from .Pc import * -from .Personagem import * +from .Personagem import * +from .PossuiHab import * from .PossuiItem import * from .PreRequisitoHab import * from .PreRequistoMissao import * diff --git a/game/Banco/__pycache__/Armadura.cpython-310.pyc b/game/Banco/__pycache__/Armadura.cpython-310.pyc index 47050b4..1f50a91 100644 Binary files a/game/Banco/__pycache__/Armadura.cpython-310.pyc and b/game/Banco/__pycache__/Armadura.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Armamento.cpython-310.pyc b/game/Banco/__pycache__/Armamento.cpython-310.pyc index b4a27c2..c59d3f7 100644 Binary files a/game/Banco/__pycache__/Armamento.cpython-310.pyc and b/game/Banco/__pycache__/Armamento.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Chefe.cpython-310.pyc b/game/Banco/__pycache__/Chefe.cpython-310.pyc index 13ed9bc..e423cb0 100644 Binary files a/game/Banco/__pycache__/Chefe.cpython-310.pyc and b/game/Banco/__pycache__/Chefe.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Consumivel.cpython-310.pyc b/game/Banco/__pycache__/Consumivel.cpython-310.pyc index e2ab126..cdcef2d 100644 Binary files a/game/Banco/__pycache__/Consumivel.cpython-310.pyc and b/game/Banco/__pycache__/Consumivel.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Contem.cpython-310.pyc b/game/Banco/__pycache__/Contem.cpython-310.pyc index 643577a..dda23fc 100644 Binary files a/game/Banco/__pycache__/Contem.cpython-310.pyc and b/game/Banco/__pycache__/Contem.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Database.cpython-310.pyc b/game/Banco/__pycache__/Database.cpython-310.pyc index 52fb808..6d473fa 100644 Binary files a/game/Banco/__pycache__/Database.cpython-310.pyc and b/game/Banco/__pycache__/Database.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Dropa.cpython-310.pyc b/game/Banco/__pycache__/Dropa.cpython-310.pyc index 6618331..79792cb 100644 Binary files a/game/Banco/__pycache__/Dropa.cpython-310.pyc and b/game/Banco/__pycache__/Dropa.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/FazMissao.cpython-310.pyc b/game/Banco/__pycache__/FazMissao.cpython-310.pyc index ff428a7..2d47774 100644 Binary files a/game/Banco/__pycache__/FazMissao.cpython-310.pyc and b/game/Banco/__pycache__/FazMissao.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Habilidade.cpython-310.pyc b/game/Banco/__pycache__/Habilidade.cpython-310.pyc index 4d3dbba..a8dc836 100644 Binary files a/game/Banco/__pycache__/Habilidade.cpython-310.pyc and b/game/Banco/__pycache__/Habilidade.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Instancia.cpython-310.pyc b/game/Banco/__pycache__/Instancia.cpython-310.pyc index 8b73a9a..895f285 100644 Binary files a/game/Banco/__pycache__/Instancia.cpython-310.pyc and b/game/Banco/__pycache__/Instancia.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/InstanciaItem.cpython-310.pyc b/game/Banco/__pycache__/InstanciaItem.cpython-310.pyc index c786ffa..1aadec0 100644 Binary files a/game/Banco/__pycache__/InstanciaItem.cpython-310.pyc and b/game/Banco/__pycache__/InstanciaItem.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Inventario.cpython-310.pyc b/game/Banco/__pycache__/Inventario.cpython-310.pyc index 0f05cba..5e725b3 100644 Binary files a/game/Banco/__pycache__/Inventario.cpython-310.pyc and b/game/Banco/__pycache__/Inventario.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Item.cpython-310.pyc b/game/Banco/__pycache__/Item.cpython-310.pyc index 31662ca..06d455c 100644 Binary files a/game/Banco/__pycache__/Item.cpython-310.pyc and b/game/Banco/__pycache__/Item.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Local.cpython-310.pyc b/game/Banco/__pycache__/Local.cpython-310.pyc index b50eec9..8fa5560 100644 Binary files a/game/Banco/__pycache__/Local.cpython-310.pyc and b/game/Banco/__pycache__/Local.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Loja.cpython-310.pyc b/game/Banco/__pycache__/Loja.cpython-310.pyc index 53515c0..839a213 100644 Binary files a/game/Banco/__pycache__/Loja.cpython-310.pyc and b/game/Banco/__pycache__/Loja.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Missao.cpython-310.pyc b/game/Banco/__pycache__/Missao.cpython-310.pyc index 12d29cd..1485484 100644 Binary files a/game/Banco/__pycache__/Missao.cpython-310.pyc and b/game/Banco/__pycache__/Missao.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Mundo.cpython-310.pyc b/game/Banco/__pycache__/Mundo.cpython-310.pyc index e601ebd..d6b4066 100644 Binary files a/game/Banco/__pycache__/Mundo.cpython-310.pyc and b/game/Banco/__pycache__/Mundo.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Npc.cpython-310.pyc b/game/Banco/__pycache__/Npc.cpython-310.pyc index cfff26c..2b4e490 100644 Binary files a/game/Banco/__pycache__/Npc.cpython-310.pyc and b/game/Banco/__pycache__/Npc.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Pc.cpython-310.pyc b/game/Banco/__pycache__/Pc.cpython-310.pyc index 03e8168..c6eb18a 100644 Binary files a/game/Banco/__pycache__/Pc.cpython-310.pyc and b/game/Banco/__pycache__/Pc.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Personagem.cpython-310.pyc b/game/Banco/__pycache__/Personagem.cpython-310.pyc index b588944..744b34a 100644 Binary files a/game/Banco/__pycache__/Personagem.cpython-310.pyc and b/game/Banco/__pycache__/Personagem.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/PossuiHab.cpython-310.pyc b/game/Banco/__pycache__/PossuiHab.cpython-310.pyc new file mode 100644 index 0000000..de3427c Binary files /dev/null and b/game/Banco/__pycache__/PossuiHab.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/PossuiItem.cpython-310.pyc b/game/Banco/__pycache__/PossuiItem.cpython-310.pyc index cc2c7b3..0e0af4f 100644 Binary files a/game/Banco/__pycache__/PossuiItem.cpython-310.pyc and b/game/Banco/__pycache__/PossuiItem.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/PreRequisitoHab.cpython-310.pyc b/game/Banco/__pycache__/PreRequisitoHab.cpython-310.pyc index 6c8be5e..010f9ca 100644 Binary files a/game/Banco/__pycache__/PreRequisitoHab.cpython-310.pyc and b/game/Banco/__pycache__/PreRequisitoHab.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/PreRequistoMissao.cpython-310.pyc b/game/Banco/__pycache__/PreRequistoMissao.cpython-310.pyc index aba8a61..01a8354 100644 Binary files a/game/Banco/__pycache__/PreRequistoMissao.cpython-310.pyc and b/game/Banco/__pycache__/PreRequistoMissao.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/Regiao.cpython-310.pyc b/game/Banco/__pycache__/Regiao.cpython-310.pyc index 494d709..813cc3d 100644 Binary files a/game/Banco/__pycache__/Regiao.cpython-310.pyc and b/game/Banco/__pycache__/Regiao.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/__init__.cpython-310.pyc b/game/Banco/__pycache__/__init__.cpython-310.pyc index 12509f1..8c142dc 100644 Binary files a/game/Banco/__pycache__/__init__.cpython-310.pyc and b/game/Banco/__pycache__/__init__.cpython-310.pyc differ diff --git a/game/Banco/__pycache__/database.cpython-310.pyc b/game/Banco/__pycache__/database.cpython-310.pyc deleted file mode 100644 index 6df764a..0000000 Binary files a/game/Banco/__pycache__/database.cpython-310.pyc and /dev/null differ diff --git a/game/Banco/__pycache__/local.cpython-310.pyc b/game/Banco/__pycache__/local.cpython-310.pyc deleted file mode 100644 index c569cba..0000000 Binary files a/game/Banco/__pycache__/local.cpython-310.pyc and /dev/null differ diff --git a/game/Banco/__pycache__/mundo.cpython-310.pyc b/game/Banco/__pycache__/mundo.cpython-310.pyc deleted file mode 100644 index d041c9e..0000000 Binary files a/game/Banco/__pycache__/mundo.cpython-310.pyc and /dev/null differ diff --git a/game/Banco/__pycache__/regiao.cpython-310.pyc b/game/Banco/__pycache__/regiao.cpython-310.pyc deleted file mode 100644 index d1119ac..0000000 Binary files a/game/Banco/__pycache__/regiao.cpython-310.pyc and /dev/null differ diff --git a/game/__pycache__/game.cpython-310.pyc b/game/__pycache__/game.cpython-310.pyc index 8636026..5ea9d41 100644 Binary files a/game/__pycache__/game.cpython-310.pyc and b/game/__pycache__/game.cpython-310.pyc differ diff --git a/game/battle.py b/game/battle.py new file mode 100644 index 0000000..b29ee51 --- /dev/null +++ b/game/battle.py @@ -0,0 +1,285 @@ +from Banco import * +from random import randint +import sys, time, os + +def print_devagar(str): + for letter in str: + sys.stdout.write(letter) + sys.stdout.flush() + time.sleep(0.041) + +def print_um_pouco_mais_rapido(str): + for letter in str: + sys.stdout.write(letter) + sys.stdout.flush() + time.sleep(0.005) + +def luta(idNPC: int, numInstancia: int, jogadorID: int): + + + while(True): + inimigo = Npc() #atributos do monstro que estao na tabela npc + + i = inimigo.getNPCID(idNPC) # Pegando a informacao da tupla do monstro passado pela funcao + + + #carregando status vindos da tabela npc + nome = i[0][1] + especie = i[0][5] + nivel = i[0][4] + forca = i[0][6] + defesa = i[0][7] + + #pegando a vida da instancia + inimigoAux = Instancia() #atributos da tabela instancia, especificando qual monstro que é + iAux = inimigoAux.getInstanciaID(idNPC,numInstancia) # Acessando a informacao da instancia especifica do monstro + if iAux is None: + print_devagar("\nInimigo já foi derrotado ou não existe\n") + break + vidaInstacia = iAux[0][2] + + if(vidaInstacia <= 0): + break + #acessando informacoes do jogador + jogador = Pc() + statusJogador = jogador.getPC(jogadorID) + nomeJogador = statusJogador[0][1] + vidaJogador = statusJogador[0][3] + nivelJogador = statusJogador[0][4] + forcaJogador = statusJogador[0][7] + defesaJogador = statusJogador[0][8] + + + + + print_um_pouco_mais_rapido("\033[1;32m\n\n ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;32m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;32m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣽⣦⣀⡀⠤⠤⣤⣀⡀⠀⠀⠀⠀⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠀⠀⠀⠀⣀⠴⠊⡉⠔⢛⠭⠉⡇⠙⢄⠈⠐⠮⡉⠒⠬⣑⠢⣀⠀⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠀⠀⣠⠞⠁⡴⠋⠀⡰⠊⡀⠀⢸⠀⠀⢣⠀⠀⣦⢄⡀⠈⠣⡈⢧⡀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠀⡔⠁⢀⠎⠀⠀⡰⢡⢮⣇⠀⢸⠀⠀⠀⠃⠀⣿⣦⡙⡄⠀⢷⡀⢃ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠸⠁⠀⡞⠀⠀⢀⣇⡇⣾⣿⣆⠀⠀⠀⠀⡸⠘⠛⠛⠛⡉ ⠀⠀⡇⢸ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⡆⠀⢸⠀⠀⠀⢸⠉⠉⠉⠉⠁⠀⠀⢻⣿⢹⠀⠀⠀⠀⣠ ⠀⠀⠁⢸ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⡇⠀⢸⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⡀⠀⠫⢾⠀⢀⣤⢞⠋⠀ ⢠⠃⠸ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⢡⠀⠈⠀⠀⠀⠈⢳⡦⣄⣀⣤⣀⣧⣶⣤⣾⣿⣿⣣ ⢫⠀⠀⡏⢠⠆ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠈⢧⡀⠑⡀⠀⠀⠘⠝⠾⠿⣿⣿⡿⠿⡿⠛⠏⠉⠀⡜⢠⠞⣠⠏⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠀⠀⠳⣄⠈⢤⠀⠀⠈⢢⡀⠈⠋⡇⠀⠀⠸⠀⠀⡔⡠⣋⡴⠋⠀ \033[0m\n") + print_um_pouco_mais_rapido("\033[1;34m ⠀⠀⠀⠈⠙⠲⠯⠶⢤⣀⣑⣦⣀⡇⠤⠴⠥⠴⠚⠈⠉⠁⠀⠀⠀⠀ \033[0m\n") + + print_devagar(f"\033[1;35mInimigo = \033[0m{nome}\n\033[1;35mEspecie = \033[0m{especie}\n\033[1;35mNivel = \033[0m{nivel}\n\033[1;35mVida = \033[0m{vidaInstacia}\n\n") + print_devagar(f"{nomeJogador} | vida = {vidaJogador} | lvl = {nivelJogador} | dano = {forcaJogador} | defesa = {defesaJogador}\n\n") + + + print_devagar("atacar/fugir?\n\n") + opcao = input() + + match opcao: + + + case 'atacar': + + #listar opcoes de ataque que o personagem possui: habilidades e itens do inventario que são do tipo armamento + print_devagar("Voce pode atacar com habilidades, itens ou usar poção: (hab/it/poc)\n\n") + atacar = input() + + if(atacar == "habilidade" or atacar == "hab" or atacar == "habilidades"): + print_devagar("\nhabilidades disponiveis:\n") + print_devagar("ID | Nome | Cooldown | Dano\n\n") + + consulta = PossuiHab() + habilidades = consulta.consultarPossuiHabPersonagem(jogadorID) + for i in habilidades: + print(i) + + print_devagar("\nDigite apenas o id da habilidade!\n") + + hab = input() + ID = consulta.getPossuiHabPK(jogadorID, hab) + if ID is not None: + danoAtaque = ID[0][3] + randint(-4,3) + defesa = defesaJogador + randint(-4,3) + + danoMonstro = forca + randint(-4,3) + defesaMonstro = defesa + randint(-4,3) + + danoInfligidoJogador = danoMonstro - defesaJogador + danoInfligidoMonstro = danoAtaque - defesaMonstro + + os.system('cls') + print_devagar(f"jogador -{danoInfligidoJogador}\n") + print_devagar(f"monstro -{danoInfligidoMonstro}\n\n") + + if(danoInfligidoJogador > 0): + novaVida = vidaJogador - danoInfligidoJogador + jogador.atualizarVidaPCID(jogadorID, novaVida) + + if(danoInfligidoMonstro > 0): + novaVidaMonstro = vidaInstacia - danoInfligidoMonstro + inimigoAux.atualizarVidaInstanciaID(idNPC, numInstancia, novaVidaMonstro) + + if(novaVida <= 0): + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⠀⠀⠀⢀⣴⣿⡶⠀⣾⣿⣿⡿⠟⠛⠁\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⣀⣀⣄⣀⠀⠀⠀⠀⣶⣶⣦⠀⠀⠀⠀⣼⣿⣿⡇⠀⣠⣿⣿⣿⠇⣸⣿⣿⣧⣤⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⢀⣴⣾⣿⡿⠿⠿⠿⠇⠀⠀⣸⣿⣿⣿⡆⠀⠀⢰⣿⣿⣿⣷⣼⣿⣿⣿⡿⢀⣿⣿⡿⠟⠛⠁⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⣴⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⢠⣿⣿⣹⣿⣿⣿⣿⣿⣿⡏⢻⣿⣿⢿⣿⣿⠃⣼⣿⣯⣤⣴⣶⣿⡤⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣼⣿⠏⠀⣀⣠⣤⣶⣾⣷⠄⣰⣿⣿⡿⠿⠻⣿⣯⣸⣿⡿⠀⠀⠀⠁⣾⣿⡏⢠⣿⣿⠿⠛⠋⠉⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣿⣿⠲⢿⣿⣿⣿⣿⡿⠋⢰⣿⣿⠋⠀⠀⠀⢻⣿⣿⣿⠇⠀⠀⠀⠀⠙⠛⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠹⢿⣷⣶⣿⣿⠿⠋⠀⠀⠈⠙⠃⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣴⣶⣦⣤⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⡇⢰⣶⣶⣾⡿⠷⣿⣿⣿⡟⠛⣉⣿⣿⣿⠆\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡎⣿⣿⣦⠀⠀⠀⢀⣤⣾⠟⢀⣿⣿⡟⣁⠀⠀⣸⣿⣿⣤⣾⣿⡿⠛⠁⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⣠⣾⣿⡿⠛⠉⢿⣦⠘⣿⣿⡆⠀⢠⣾⣿⠋⠀⣼⣿⣿⣿⠿⠷⢠⣿⣿⣿⠿⢻⣿⣧⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣴⣿⣿⠋⠀⠀⠀⢸⣿⣇⢹⣿⣷⣰⣿⣿⠃⠀⢠⣿⣿⢃⣀⣤⣤⣾⣿⡟⠀⠀⠀⢻⣿⣆⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣿⣿⡇⠀⠀⢀⣴⣿⣿⡟⠀⣿⣿⣿⣿⠃⠀⠀⣾⣿⣿⡿⠿⠛⢛⣿⡟⠀⠀⠀⠀⠀⠻⠿⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠹⣿⣿⣶⣾⣿⣿⣿⠟⠁⠀⠸⢿⣿⠇⠀⠀⠀⠛⠛⠁⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠈⠙⠛⠛⠛⠋⠁\033[0m\n") + break + else: + os.system('cls') + print_devagar("\nHabilidade inexistente\n") + + danoMonstro = forca + randint(-4,3) + defesa = defesaJogador + randint(-4,3) + danoInfligidoJogador = danoMonstro - defesaJogador + + print_devagar(f"jogador -{danoInfligidoJogador}\n\n") + + if(danoInfligidoJogador > 0): + novaVida = vidaJogador - danoInfligidoJogador + jogador.atualizarVidaPCID(jogadorID, novaVida) + if(novaVida <= 0): + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⠀⠀⠀⢀⣴⣿⡶⠀⣾⣿⣿⡿⠟⠛⠁\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⣀⣀⣄⣀⠀⠀⠀⠀⣶⣶⣦⠀⠀⠀⠀⣼⣿⣿⡇⠀⣠⣿⣿⣿⠇⣸⣿⣿⣧⣤⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⢀⣴⣾⣿⡿⠿⠿⠿⠇⠀⠀⣸⣿⣿⣿⡆⠀⠀⢰⣿⣿⣿⣷⣼⣿⣿⣿⡿⢀⣿⣿⡿⠟⠛⠁⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⣴⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⢠⣿⣿⣹⣿⣿⣿⣿⣿⣿⡏⢻⣿⣿⢿⣿⣿⠃⣼⣿⣯⣤⣴⣶⣿⡤⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣼⣿⠏⠀⣀⣠⣤⣶⣾⣷⠄⣰⣿⣿⡿⠿⠻⣿⣯⣸⣿⡿⠀⠀⠀⠁⣾⣿⡏⢠⣿⣿⠿⠛⠋⠉⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣿⣿⠲⢿⣿⣿⣿⣿⡿⠋⢰⣿⣿⠋⠀⠀⠀⢻⣿⣿⣿⠇⠀⠀⠀⠀⠙⠛⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠹⢿⣷⣶⣿⣿⠿⠋⠀⠀⠈⠙⠃⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣴⣶⣦⣤⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⡇⢰⣶⣶⣾⡿⠷⣿⣿⣿⡟⠛⣉⣿⣿⣿⠆\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡎⣿⣿⣦⠀⠀⠀⢀⣤⣾⠟⢀⣿⣿⡟⣁⠀⠀⣸⣿⣿⣤⣾⣿⡿⠛⠁⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⣠⣾⣿⡿⠛⠉⢿⣦⠘⣿⣿⡆⠀⢠⣾⣿⠋⠀⣼⣿⣿⣿⠿⠷⢠⣿⣿⣿⠿⢻⣿⣧⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣴⣿⣿⠋⠀⠀⠀⢸⣿⣇⢹⣿⣷⣰⣿⣿⠃⠀⢠⣿⣿⢃⣀⣤⣤⣾⣿⡟⠀⠀⠀⢻⣿⣆⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣿⣿⡇⠀⠀⢀⣴⣿⣿⡟⠀⣿⣿⣿⣿⠃⠀⠀⣾⣿⣿⡿⠿⠛⢛⣿⡟⠀⠀⠀⠀⠀⠻⠿⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠹⣿⣿⣶⣾⣿⣿⣿⠟⠁⠀⠸⢿⣿⠇⠀⠀⠀⠛⠛⠁⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠈⠙⠛⠛⠛⠋⠁\033[0m\n") + break + + + elif(atacar == "i" or atacar == "item" or atacar == "it"): + + print_devagar("\nItens disponiveis:\n") + print_devagar("ID | Nome | Dano\n\n") + + inv = Inventario() + inv.consultarInventarioArmasID(jogadorID) + + print_devagar("\nDigite apenas o id do item!\n") + item = input() + IDi = inv.getInventarioArmasID(jogadorID, item) + + if IDi is not None: + danoAtaque = IDi[0][2] + randint(-4,3) + defesa = defesaJogador + randint(-4,3) + + danoMonstro = forca + randint(-4,3) + defesaMonstro = defesa + randint(-4,3) + + danoInfligidoJogador = danoMonstro - defesaJogador + danoInfligidoMonstro = danoAtaque - defesaMonstro + + os.system('cls') + print_devagar(f"jogador -{danoInfligidoJogador}\n") + print_devagar(f"monstro -{danoInfligidoMonstro}\n\n") + + if(danoInfligidoJogador > 0): + novaVida = vidaJogador - danoInfligidoJogador + jogador.atualizarVidaPCID(jogadorID, novaVida) + + if(danoInfligidoMonstro > 0): + novaVidaMonstro = vidaInstacia - danoInfligidoMonstro + inimigoAux.atualizarVidaInstanciaID(idNPC, numInstancia, novaVidaMonstro) + + if(novaVida <= 0): + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⠀⠀⠀⢀⣴⣿⡶⠀⣾⣿⣿⡿⠟⠛⠁\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⣀⣀⣄⣀⠀⠀⠀⠀⣶⣶⣦⠀⠀⠀⠀⣼⣿⣿⡇⠀⣠⣿⣿⣿⠇⣸⣿⣿⣧⣤⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⢀⣴⣾⣿⡿⠿⠿⠿⠇⠀⠀⣸⣿⣿⣿⡆⠀⠀⢰⣿⣿⣿⣷⣼⣿⣿⣿⡿⢀⣿⣿⡿⠟⠛⠁⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⣴⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⢠⣿⣿⣹⣿⣿⣿⣿⣿⣿⡏⢻⣿⣿⢿⣿⣿⠃⣼⣿⣯⣤⣴⣶⣿⡤⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣼⣿⠏⠀⣀⣠⣤⣶⣾⣷⠄⣰⣿⣿⡿⠿⠻⣿⣯⣸⣿⡿⠀⠀⠀⠁⣾⣿⡏⢠⣿⣿⠿⠛⠋⠉⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣿⣿⠲⢿⣿⣿⣿⣿⡿⠋⢰⣿⣿⠋⠀⠀⠀⢻⣿⣿⣿⠇⠀⠀⠀⠀⠙⠛⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠹⢿⣷⣶⣿⣿⠿⠋⠀⠀⠈⠙⠃⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣴⣶⣦⣤⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⡇⢰⣶⣶⣾⡿⠷⣿⣿⣿⡟⠛⣉⣿⣿⣿⠆\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡎⣿⣿⣦⠀⠀⠀⢀⣤⣾⠟⢀⣿⣿⡟⣁⠀⠀⣸⣿⣿⣤⣾⣿⡿⠛⠁⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⣠⣾⣿⡿⠛⠉⢿⣦⠘⣿⣿⡆⠀⢠⣾⣿⠋⠀⣼⣿⣿⣿⠿⠷⢠⣿⣿⣿⠿⢻⣿⣧⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣴⣿⣿⠋⠀⠀⠀⢸⣿⣇⢹⣿⣷⣰⣿⣿⠃⠀⢠⣿⣿⢃⣀⣤⣤⣾⣿⡟⠀⠀⠀⢻⣿⣆⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣿⣿⡇⠀⠀⢀⣴⣿⣿⡟⠀⣿⣿⣿⣿⠃⠀⠀⣾⣿⣿⡿⠿⠛⢛⣿⡟⠀⠀⠀⠀⠀⠻⠿⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠹⣿⣿⣶⣾⣿⣿⣿⠟⠁⠀⠸⢿⣿⠇⠀⠀⠀⠛⠛⠁⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠈⠙⠛⠛⠛⠋⠁\033[0m\n") + break + + else: + os.system('cls') + print_devagar("\nItem inexistente\n") + + danoMonstro = forca + randint(-4,3) + defesa = defesaJogador + randint(-4,3) + danoInfligidoJogador = danoMonstro - defesaJogador + + print_devagar(f"jogador -{danoInfligidoJogador}\n") + + if(danoInfligidoJogador > 0): + novaVida = vidaJogador - danoInfligidoJogador + jogador.atualizarVidaPCID(jogadorID, novaVida) + if(novaVida <= 0): + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⠀⠀⠀⢀⣴⣿⡶⠀⣾⣿⣿⡿⠟⠛⠁\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⣀⣀⣄⣀⠀⠀⠀⠀⣶⣶⣦⠀⠀⠀⠀⣼⣿⣿⡇⠀⣠⣿⣿⣿⠇⣸⣿⣿⣧⣤⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⢀⣴⣾⣿⡿⠿⠿⠿⠇⠀⠀⣸⣿⣿⣿⡆⠀⠀⢰⣿⣿⣿⣷⣼⣿⣿⣿⡿⢀⣿⣿⡿⠟⠛⠁⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⣴⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⢠⣿⣿⣹⣿⣿⣿⣿⣿⣿⡏⢻⣿⣿⢿⣿⣿⠃⣼⣿⣯⣤⣴⣶⣿⡤⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣼⣿⠏⠀⣀⣠⣤⣶⣾⣷⠄⣰⣿⣿⡿⠿⠻⣿⣯⣸⣿⡿⠀⠀⠀⠁⣾⣿⡏⢠⣿⣿⠿⠛⠋⠉⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⣿⣿⠲⢿⣿⣿⣿⣿⡿⠋⢰⣿⣿⠋⠀⠀⠀⢻⣿⣿⣿⠇⠀⠀⠀⠀⠙⠛⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠹⢿⣷⣶⣿⣿⠿⠋⠀⠀⠈⠙⠃⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣴⣶⣦⣤⡀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⣠⡇⢰⣶⣶⣾⡿⠷⣿⣿⣿⡟⠛⣉⣿⣿⣿⠆\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⡎⣿⣿⣦⠀⠀⠀⢀⣤⣾⠟⢀⣿⣿⡟⣁⠀⠀⣸⣿⣿⣤⣾⣿⡿⠛⠁⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⣠⣾⣿⡿⠛⠉⢿⣦⠘⣿⣿⡆⠀⢠⣾⣿⠋⠀⣼⣿⣿⣿⠿⠷⢠⣿⣿⣿⠿⢻⣿⣧⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣴⣿⣿⠋⠀⠀⠀⢸⣿⣇⢹⣿⣷⣰⣿⣿⠃⠀⢠⣿⣿⢃⣀⣤⣤⣾⣿⡟⠀⠀⠀⢻⣿⣆⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⣿⣿⡇⠀⠀⢀⣴⣿⣿⡟⠀⣿⣿⣿⣿⠃⠀⠀⣾⣿⣿⡿⠿⠛⢛⣿⡟⠀⠀⠀⠀⠀⠻⠿⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠹⣿⣿⣶⣾⣿⣿⣿⠟⠁⠀⠸⢿⣿⠇⠀⠀⠀⠛⠛⠁⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀\n") + print_um_pouco_mais_rapido("\033[0;31m ⠀⠀⠀⠀⠈⠙⠛⠛⠛⠋⠁\033[0m\n") + break + + elif(atacar == "poção" or atacar == "poc" or atacar == "pocao"): + print_devagar("\nPoções disponiveis:\n") + print_devagar("ID | Nome | Cura | Usos\n\n") + + inv2 = Inventario() + inv2.consultarInventarioConsumiveisID(jogadorID) + + print_devagar("\nDigite apenas o ID da poção!\n") + + IdPocao = input() + teste = inv2.getInventarioConsumiveisID(jogadorID, IdPocao) + + os.system('cls') + if teste is not None: + novaVida = vidaJogador + teste[0][2] + jogador.atualizarVidaPCID(jogadorID, novaVida) + else: + os.system('cls') + print_devagar("\nPoção inexistente\n") + + if(vidaInstacia <= 0): + print_devagar("\nVoce derrotou o monstro\n") + + case 'fugir': + print_devagar("Você fugiu!\n") + break + + case _: + print_devagar("\nDigite uma das opcoes!\n") + diff --git a/game/game.py b/game/game.py index 24f802e..d773950 100644 --- a/game/game.py +++ b/game/game.py @@ -1,35 +1,139 @@ from Banco import * pc = Pc() +personagem = Personagem() +possuiHab = PossuiHab() +lc=Local() +instanciaItem = Instanciaitem() +inventario = Inventario() def CarregarJogo(): Save=input("\033[1;32mDigite o ID do seu personagem: \033[0m") jogador=pc.getPC(Save) - return jogador[0] + while(True): + posicao=lc.getLocalPc(jogador[0][0]) + print("\n"+80*"-"+"\n") + print(f"\033[1;32m{jogador[0][1]}\nLocal: {posicao[0][2]}\nDescrição: {posicao[0][1]}\nCoordenada: {posicao[0][0]}\033[0m") + print("\n"+80*"-"+"\n") + print("\033[0;36m|1| = Mudar de sala\n|2| = Voltar para o menu principal\033[0m") + opcao = input() + match opcao: + case '1': + EncontrarSalas(posicao[0][0], jogador[0][0]) + case '2': + print("\033[31;1;4mVoltando para o menu principal\033[0m") + break -def EncontrarSalas(pos): + +def EncontrarSalas(pos, Id): Quadrado=2 - lc=Local() Oeste=lc.getLocal(pos-1) Norte=lc.getLocal(pos-Quadrado) Leste=lc.getLocal(pos+1) Sul=lc.getLocal(pos+Quadrado) salas_disponiveis = [] - # Adicionar à lista se não for None - if Oeste is not None: + print("\033[1;32mSuas opções de viajem são:\033[0m\n") + + if Oeste is not None and ((pos)%Quadrado): + print(f"\033[0;36mOeste = {Oeste[0][2]} / Cordenada {Oeste[0][0]}\033[0m\n") salas_disponiveis.append(Oeste[0][0]) - #salas_disponiveis.append(Oeste[0][2]) + if Norte is not None: + print(f"\033[0;36mNorte = {Norte[0][2]} / Cordenada {Norte[0][0]}\033[0m\n") salas_disponiveis.append(Norte[0][0]) - #salas_disponiveis.append(Norte[0][2]) - if Leste is not None: + + if Leste is not None and (((pos+1)%Quadrado) != 0): + print(f"\033[0;36mLeste = {Leste[0][2]} / Cordenada {Leste[0][0]}\033[0m\n") salas_disponiveis.append(Leste[0][0]) - #salas_disponiveis.append(Leste[0][2]) + if Sul is not None: + print(f"\033[0;36mSul = {Sul[0][2]} / Cordenada {Sul[0][0]}\033[0m\n") salas_disponiveis.append(Sul[0][0]) - #salas_disponiveis.append(Sul[0][2]) - # Retornar a lista de salas disponíveis - return salas_disponiveis - \ No newline at end of file + mudar=int(input("\033[1;32mPara qual sala deseja viajar? Digite -1 para Sair: \033[0m")) + + for i in salas_disponiveis: + if(i==mudar): + print(f"Você viajou para a sala: {i}") + pc.updatePcLocal(Id, mudar) + + + +def inserirInventarioPersonagem(pcID): + IDinv+=1 + inventario.inserirInventario(IDinv,1,pcID) + +def ListarHabilidadePersonagem(pcID): + habilidade = possuiHab.consultarPossuiHabPersonagem(pcID) + tuplasHabilidade =[f"|Habilidades que possui\n|Nome Habilidade:| {y[1]}\n\n" for y in habilidade] + for x in tuplasHabilidade: + print(x) + +def definirHabilidadePersonagem(pcEspecie,pcID): + possuiHab = PossuiHab() + match pcEspecie: + case 'Humano': + possuiHab.inserirPossuiHab(pcID,1) + + case 'Povo fogo': + possuiHab.inserirPossuiHab(pcID,2) + + case 'Povo crystal': + possuiHab.inserirPossuiHab(pcID,3) + + case 'Vampiro': + possuiHab.inserirPossuiHab(pcID,4) + +def deletarJogador(pcID): + criarPC = Pc() + criarPC.deletarPC(pcID) + +def verJogadorOp(NomedoJogador,pcID): + jogador = pc.consultarPCNome(NomedoJogador) + tuplas = [f"|Caracteristicas personagem\n| ID:{x[0]} | Nome: {x[1]} | LVL:{x[4]}| Especie:{x[6]}|\n\n" for x in jogador] + for y in tuplas: + print(y) + ListarHabilidadePersonagem(pcID) + menuJogador() + +def atualizarJogador(pcID,pcNome): + pc.updatePc(pcID,pcNome) + menuJogador() + +def criarJogador(pcID,pcNome,pcEspecie): + criarPC = Pc() + personagem.criarPersonagem(pcID, True) + criarPC.criarPc(pcID,pcNome,0,100,0,0,pcEspecie,5,0,0) + definirHabilidadePersonagem(pcEspecie, pcID) + inserirInventarioPersonagem(pcID) + menuJogador() + +def menuJogador(): + print("\033[1;32m Opções de Jogador") + print("\033[0;36m|1| = Criar personagem") + print("|2| = Ver jogador") + print("|3| = Atualizar jogador") + print("|4| = Deletar jogador") + print("|5| = Voltar\n") + + OpçaoJogador = input() + + match OpçaoJogador: + case '1': + pcID = input("ID do jogador :") + pcNome = input("Nome do jogador :") + pcEspecie = input("|Especies: |\n|Humano|\n|Povo Fogo|\n|Povo crystal|\n|Vampiro|:\n") + criarJogador(pcID,pcNome,pcEspecie) + case '2': + pcID = input("ID do jogador :") + NomedoJogador = input("Digite o Nome do jogador(es) que busca:") + verJogadorOp(NomedoJogador,pcID) + case '3': + NomedoJogador = input("Digite seu Nome") + pcID = input("ID do jogador que você deseja atualizar o Nome:") + pcNome = input("Novo Nome do jogador :") + atualizarJogador(pcID,pcNome) + case '4': + pcID = input("ID do jogador que deseja deletar :") + deletarJogador(pcID) diff --git a/game/main.py b/game/main.py index ac5d8df..c6cdf8b 100644 --- a/game/main.py +++ b/game/main.py @@ -3,11 +3,12 @@ personagem = Personagem() pc = Pc() +lc=Local() -print(" ⠀⠀⠀⠀⠀⠀⠀⠰⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ") -print(" ⠀⠀⠀⠀⠀⠀⠀⢰⣿⡟⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ") -print(" ⠀⠀⠀⠀⠀⢀⣀⣼⣿⣀⣹⣿⡆⠀⢤⡄⢤⣄⢤⡤⠀⢤⣤⣤⣤⣤⢤⣄⠀⢤⣤⡤⣤⣤⣤⢠⡄⠀⣤⢤⡤⢤⡠⣤⠤⣴⠀⠀⠀⠀ ") -print(" ⠀⠀⠀⠀⠀⠈⢹⣿⡇⠉⠉⢿⣿⡄⢸⡇⠀⢹⡏⢿⣠⡟⢹⣿⠤⠄⢸⡿⣷⣼⡇⠀⣿⡇⠀⢸⡇⠀⡇⢸⡇⣎⠀⣿⠶⠌⠀⠀⠀⠀ ") +print(" ⠀⠀⠀⠀⠀⠀⠀⠰⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ") +print(" ⠀⠀⠀⠀⠀⠀⠀⢰⣿⡟⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ") +print(" ⠀⠀⠀⠀⠀⢀⣀⣼⣿⣀⣹⣿⡆⠀⢤⡄⢤⣄⢤⡤⠀⢤⣤⣤⣤⣤⢤⣄⠀⢤⣤⡤⣤⣤⣤⢠⡄⠀⣤⢤⡤⢤⡠⣤⠤⣴⠀⠀⠀⠀ ") +print(" ⠀⠀⠀⠀⠀⠈⢹⣿⡇⠉⠉⢿⣿⡄⢸⡇⠀⢹⡏⢿⣠⡟⢹⣿⠤⠄⢸⡿⣷⣼⡇⠀⣿⡇⠀⢸⡇⠀⡇⢸⡇⣎⠀⣿⠶⠌⠀⠀⠀⠀ ") print(" ⠀⠀⠀⠀⠀⡴⠾⠿⠀⠀⠀⠘⠿⠿⠾⠿⠴⠛⠁⠘⠏⠀⠼⠿⠦⠖⠸⠃⠀⠙⠇⠀⠿⠇⠀⠘⠷⠚⠇⠾⠇⠘⠿⠿⠶⠶⠀⠀⠀ ") print(" ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣀⠀⠀⣤⣤⣤⣤⣤⣤⣤⣤⣤⡄⢠⣤⡤⠀⢲⣶⣶⡄⠀⠀⠀⣰⣶⣶⠖⠀⢲⣶⣶⠶⠶⢶⣶⠀⠀⠀⠀ ") print(" ⢀⣀⠀⠀⠀⠀⠀⢀⣸⣿⣉⣀⠀⢟⡉⠉⡉⣿⣿⢉⣉⣙⣛⣘⣿⣇⣀⡀⣿⢿⣿⡄⠀⣼⡿⣿⣿⢠⣤⣬⣭⣭⣤⣤⣤⣬⣤⣤⣀⠀ ") @@ -40,66 +41,37 @@ print(" Hora de aventura! ") while(True): - print("\n\033[1;32m| Bem-vindo ao MUD Hora de Aventura |\033[0m\n") print("\033[0;36m|1| = Acessar Menu") - print("|2| = Criar Personagem(PC)") - print("|3| = Carregar Jogo") - print("|4| = Ver localização") - print("|5| = Fechar jogo\n") + print("|2| = Carregar Jogo") + print("|3| = Fechar jogo\n") + print("\033[1;32mEscolha uma opção de 1 a 3:\033[0m\n") - print("\033[1;32mEscolha uma opção de 1 a 5:\033[0m\n") opcao = input() + print("Opção escolhida: ", opcao) + print("\n") + match opcao: case '1': - - print("\033[1;32mOpções de jogador:\033[0m") - print(" 1 = Ver jogador") - print(" 2 = Atualizar jogador") - print(" 3 = Deletar jogador") - print(" 4 = Voltar") - menuJogador = input() + print("\033[1;32mOpções de Menu:\033[0m") + print("\033[0;36m|1|= Opções de Jogador") + print("\033[0;36m|2|= Opções 2") - match menuJogador: - case '1': - print("Deseja ver todos os jogadores ou um jogador especifico?: 1 = Todos/ 2 = Jogador") - escolhaMenujogador = input("Escolher entre 1 e 2: ") - - if(escolhaMenujogador == '1'): - pc.consultarPC() - - if(escolhaMenujogador == '2'): - IDdoJogador = input("Digite o ID do jogador que busca:") - pc.consultarPCID(IDdoJogador) - case '4': - print("\n--------------------------------------------------------------------------------\n") - - - case '2': - print("Digite suas caracteristicas") - pcID = input("ID:") - pcNome = input("Nome:") - pcEspecie = input("Especie:") - criarPC = Pc() - personagem.criarPersonagem(pcID, False) - criarPC.criarPc(pcID,pcNome,0,100,0,0,pcEspecie,5,0,0) - - case'3': - jogador=game.CarregarJogo() - lc=Local() - posicao=lc.getLocalPc(jogador[0]) - - print("\n--------------------------------------------------------------------------------\n") - print(f"\033[1;32m{jogador[1]}\nLocal: {posicao[0][2]}\nDescrição: {posicao[0][1]}\nCoordenada: {posicao[0][0]}\033[0m") - print("\n--------------------------------------------------------------------------------\n") - salas=game.EncontrarSalas(jogador[9]) - print(salas) + opcoes = input() + + print("Opção escolhida: ", opcoes) + print("\n") + + if(opcoes == '1'): + game.menuJogador() + if(opcoes == '2'): + print("opcoes 2 ") + + case'2': + game.CarregarJogo() - print("\n"+80*"-"+"\n") - case '4': - print("Localização") - print("\n--------------------------------------------------------------------------------\n") - case '5': - print("Finalizando o jogo.....") + + case '3': + print("\033[31;1;4mFinalizando o jogo.....\033[0m") break \ No newline at end of file diff --git a/game/scripts/DDL/CREATE TABLE HoraDeAventura.sql b/game/scripts/DDL/CREATE TABLE HoraDeAventura.sql index 4cc1457..5a93a01 100644 --- a/game/scripts/DDL/CREATE TABLE HoraDeAventura.sql +++ b/game/scripts/DDL/CREATE TABLE HoraDeAventura.sql @@ -137,8 +137,6 @@ create table Consumivel( foreign key (Item) references Item(IDItem) ); ---Tabela de n pra instanciaItem pra NPC - CREATE TABLE Inventario ( IDinv INT PRIMARY KEY, QTD_de_itens INT, @@ -181,6 +179,7 @@ CREATE TABLE InstanciaItem ( foreign key (IDinv) references Inventario(IDinv) ); + CREATE TABLE Dropa( NPC INT, numeroItem INT, diff --git a/game/scripts/DDL/GeneralizacaoPersonagem.sql b/game/scripts/DDL/GeneralizacaoPersonagem.sql index 1e3fcf7..f599b05 100644 --- a/game/scripts/DDL/GeneralizacaoPersonagem.sql +++ b/game/scripts/DDL/GeneralizacaoPersonagem.sql @@ -12,4 +12,20 @@ CREATE OR REPLACE FUNCTION check_pc() RETURNS trigger AS -- Procedure para checa CREATE TRIGGER check_pc -- Trigger para adicionar NPC BEFORE UPDATE OR INSERT ON npc FOR EACH ROW -EXECUTE PROCEDURE check_pc(); \ No newline at end of file +EXECUTE PROCEDURE check_pc(); + +CREATE OR REPLACE FUNCTION check_npc() RETURNS trigger AS -- Procedure para checar se o item adicionado ja pertence a npc + $check_npc$ + BEGIN + PERFORM * FROM npc WHERE Personagem = NEW.Personagem; + IF FOUND THEN + RAISE EXCEPTION 'O Id ja pertence a npc'; + END IF; + RETURN NEW; + END + $check_npc$ LANGUAGE plpgsql; + +CREATE TRIGGER check_npc -- Trigger para adicionar PC +BEFORE UPDATE OR INSERT ON pc +FOR EACH ROW +EXECUTE PROCEDURE check_npc(); \ No newline at end of file diff --git a/game/scripts/TRIGGER e STORED PROCEDURE/Trigger para instancia morta.sql b/game/scripts/TRIGGER e STORED PROCEDURE/Trigger para instancia morta.sql new file mode 100644 index 0000000..ec28d37 --- /dev/null +++ b/game/scripts/TRIGGER e STORED PROCEDURE/Trigger para instancia morta.sql @@ -0,0 +1,21 @@ +-- FUNCTION: public.checar_instancia_morta() + +-- DROP FUNCTION IF EXISTS public.checar_instancia_morta(); + +CREATE OR REPLACE FUNCTION public.checar_instancia_morta() + RETURNS trigger + LANGUAGE 'plpgsql' + COST 100 + VOLATILE NOT LEAKPROOF +AS $BODY$ +BEGIN + IF NEW.vida <= 0 THEN + DELETE FROM instancia WHERE personagem = NEW.personagem AND numero = NEW.numero; + END IF; + + RETURN NEW; +END +$BODY$; + +ALTER FUNCTION public.checar_instancia_morta() + OWNER TO postgres;