diff --git a/falas.txt b/falas.txt new file mode 100644 index 0000000..f2be790 --- /dev/null +++ b/falas.txt @@ -0,0 +1,30 @@ +CENA pinto_acha_cobra +P Eita, um baú totalmente estranho no meio \ndessa masmorra muito perigosa. +P Baús são legais. Com certeza deve ter \nalgo legal dentro. Vou ver o que tem nele.. +P Vixe, uma cobra! +C Tenha calma pequeno pinto. \nEu não sou uma cobra má. +P Por que eu deveria acreditar em você? +C Porque o meu nome é Python! Cobras \ncom esse nome são confiáveis... +P Tipo aquela linguagem \nde programação?!?! +C Isso mesmo! +P Eu não quero \nfazer programa!!! +C Volte aqui pintinho, eu \nnão vou fazer você programar! +CENA pinto_acha_cobra END + +CENA pinto_foge_cobra +P Ainda bem que eu já passei por aqui! +C Que lugar estranho! \nNo baú era melhor. +C Não sei para onde esse pinto foi... +CENA pinto_foge_cobra END + +CENA pinto_acha_arma +P Nossa, outro baú muito perigoso \nnessa masmorra. Vou abrir! +P Isso com certeza vai servir! +C Eu achei você! +CENA pinto_acha_arma END + +CENA pinto_mata_cobra +P Daqui não tem como errar... +C Vou te alcançar! +P Parece que agora eu não \nsou o "pequeno pinto", né? +P Vou voltar a explorar essa masmorra maneira \ No newline at end of file diff --git a/main.py b/main.py index 2d11b06..3332ea6 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,49 @@ """ module docs """ +import re import turtle as tl from time import sleep as pause from menus import main_menu +def ler_falas(file: str) -> dict[str: list[str]]: + pattern_inicio: str = r"CENA ([\w ]+)\s?" + pattern_fim: str = r"CENA ([\w ]+) END\s?" + + falas = dict() + + with open(file, "r", encoding="utf-8") as arquivo: + atual = "" + lendo = True + + + linha = arquivo.readline() + while linha != "": + + inicio = re.search(pattern_inicio, linha) + fim = re.search(pattern_fim, linha) + + if inicio: + atual = inicio.group()[5:-1] + linha = arquivo.readline() + lendo = True + continue + elif fim: + lendo = False + continue + if lendo == False: + linha = arquivo.readline() + continue + else: + if falas.get(atual) == None: + falas[atual] = [] + linha = linha.replace("\\n", "\n") + falas[atual].append((linha[0], linha[2:-1])) + linha = arquivo.readline() + return falas + def lerp(inicial: tl.Vec2D, final: tl.Vec2D, t: float) -> tl.Vec2D: return inicial + (final - inicial) * t @@ -35,6 +72,14 @@ def falas(personagem: tl.Turtle, text: str, tempo: float = 3) -> None: fala.undo() count += 1 +def falar_do_roteiro(roteiro: list[tuple[str, str]], index: int, tempo: int = 3): + if roteiro[index][0] == "P": + falas(pinto, roteiro[index][1], tempo) + elif roteiro[index][0] == "C": + falas(cobra, roteiro[index][1], tempo) + return index + 1 + + def pinto_acha_cobra() -> str: """ Roteiro da cena 1: @@ -53,6 +98,9 @@ def pinto_acha_cobra() -> str: Ambos saem de cena. """ + cena = "pinto_acha_cobra" + index = 0 + terminou = "não" tl.addshape("sprites/fundos/fundo_1_bau_fechado.gif") @@ -65,8 +113,8 @@ def pinto_acha_cobra() -> str: pinto.showturtle() pinto.goto(-132, -89) - falas(pinto, "Eita, um baú totalmente estranho no meio\ndessa masmorra muito perigosa.") - falas(pinto, "Baús são legais. Com certeza deve ter\nalgo legal dentro. Vou ver o que tem nele.") + index = falar_do_roteiro(falas_dict[cena], index) + index = falar_do_roteiro(falas_dict[cena], index) pinto.goto(28, -89) pinto.goto(31, -16) @@ -84,18 +132,18 @@ def pinto_acha_cobra() -> str: cobra.showturtle() pinto.goto(-160, -132) - falas(pinto, "Vixe, uma cobra!") + index = falar_do_roteiro(falas_dict[cena], index) cobra.goto(-3, -62) - falas(cobra, "Tenha calma pequeno pinto.\nEu não sou uma cobra má.") + index = falar_do_roteiro(falas_dict[cena], index) pinto.goto(-242, -164) - falas(pinto, "Por que eu deveria acreditar em você?") + index = falar_do_roteiro(falas_dict[cena], index) cobra.goto(-55, -108) - falas(cobra, "Porque o meu nome é Python! Cobras\ncom esse nome são confiáveis...", tempo = 4) + index = falar_do_roteiro(falas_dict[cena], index, tempo = 4) - falas(pinto, "Tipo aquela linguagem\nde programação?!?!") + index = falar_do_roteiro(falas_dict[cena], index) falas(cobra, "Isso mesmo!", tempo = 1.5) @@ -111,14 +159,14 @@ def pinto_acha_cobra() -> str: pinto.shape("sprites/personagens/_pinto.gif") - falas(pinto, "Eu não quero\nfazer programa!!!") + index = falar_do_roteiro(falas_dict[cena], index) pause(0.5) pinto.goto(-281, -89) pinto.hideturtle() - falas(cobra, "Volte aqui pintinho, eu\nnão vou fazer você programar!") + index = falar_do_roteiro(falas_dict[cena], index) cobra.goto(-281, -89) cobra.hideturtle() @@ -143,6 +191,9 @@ def pinto_foge_cobra() -> str: Ambos fora de cena. """ + cena = "pinto_foge_cobra" + index = 0 + terminou = "não" tl.addshape("sprites/fundos/fundo_2.gif") @@ -155,7 +206,7 @@ def pinto_foge_cobra() -> str: pinto.showturtle() pinto.goto(2, -28) - falas(pinto, "Ainda bem que eu já passei por aqui!") + index = falar_do_roteiro(falas_dict[cena], index) tl.addshape("sprites/personagens/pinto_.gif") pinto.shape("sprites/personagens/pinto_.gif") @@ -170,7 +221,7 @@ def pinto_foge_cobra() -> str: cobra.showturtle() cobra.goto(2, -28) - falas(cobra, "Que lugar estranho!\nNo baú era melhor.") + index = falar_do_roteiro(falas_dict[cena], index) tl.addshape("sprites/personagens/cobra_.gif") @@ -182,7 +233,7 @@ def pinto_foge_cobra() -> str: pause(0.15) count += 1 - falas(cobra, "Não sei para onde esse pinto foi...") + index = falar_do_roteiro(falas_dict[cena], index) cobra.shape("sprites/personagens/cobra_.gif") @@ -209,6 +260,9 @@ def pinto_acha_arma() -> str: A cobra segue o pinto. Todos saem de cena. """ + cena = "pinto_acha_arma" + index = 0 + terminou = "não" tl.addshape("sprites/fundos/fundo_3_bau_fechado.gif") @@ -222,7 +276,7 @@ def pinto_acha_arma() -> str: pinto.showturtle() pinto.goto(0, -16) - falas(pinto, "Nossa, outro baú muito perigoso\nnessa masmorra. Vou abrir!") + index = falar_do_roteiro(falas_dict[cena], index) tl.addshape("sprites/fundos/fundo_3_bau_aberto.gif") @@ -234,7 +288,7 @@ def pinto_acha_arma() -> str: lanca_chamas.goto(0, 64) lanca_chamas.showturtle() - falas(pinto, "Isso com certeza vai servir!") + index = falar_do_roteiro(falas_dict[cena], index) lanca_chamas.hideturtle() tl.addshape("sprites/personagens/_pinto_flamer.gif") @@ -267,7 +321,7 @@ def pinto_acha_arma() -> str: cobra.showturtle() cobra.goto(0, 0) - falas(cobra, "Eu achei você!", tempo = 1.8) + index = falar_do_roteiro(falas_dict[cena], index) cobra.goto(-352, 0) pause(2) @@ -291,6 +345,9 @@ def pinto_mata_cobra() -> str: Ele sai da cena. """ + cena = "pinto_mata_cobra" + index = 0 + terminou = "não" tl.addshape("sprites/fundos/fundo_4.gif") @@ -308,7 +365,7 @@ def pinto_mata_cobra() -> str: tl.addshape("sprites/personagens/pinto_flamer_.gif") pinto.shape("sprites/personagens/pinto_flamer_.gif") - falas(pinto, "Daqui não tem como errar...") + index = falar_do_roteiro(falas_dict[cena], index) tl.addshape("sprites/personagens/_cobra.gif") cobra.shape("sprites/personagens/_cobra.gif") @@ -331,7 +388,7 @@ def pinto_mata_cobra() -> str: fogo.goto(-50, -121) fogo.showturtle() - falas(cobra, "AHHHHHHHHHHHHH!", tempo = 1) + index = falar_do_roteiro(falas_dict[cena], index, tempo = 1) pause(1.5) @@ -341,7 +398,7 @@ def pinto_mata_cobra() -> str: fogo.hideturtle() falas(pinto, 'Parece que agora eu não\nsou o "pequeno pinto", né?', tempo = 4.5) - falas(pinto, "Vou voltar a explorar essa masmorra maneira.") + index = falar_do_roteiro(falas_dict[cena], index) tl.addshape("sprites/personagens/pinto_.gif") pinto.shape("sprites/personagens/pinto_.gif") @@ -421,9 +478,11 @@ if __name__ == "__main__": fala = tl.Turtle(visible=False) fala.up() + falas_dict = ler_falas("falas.txt") + + index = 0 main() #chamando funcao principal - tl.mainloop()