Compare commits

...

9 Commits

24 changed files with 127 additions and 24 deletions
+32
View File
@@ -0,0 +1,32 @@
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 pegar!
C AHHHHHHHHHHHH!
P Parece que agora eu não \nsou o "pequeno pinto", né?
P Vou voltar a explorar essa masmorra maneira
CENA pinto_mata_cobra END
+95 -24
View File
@@ -1,12 +1,62 @@
"""
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
# Função de movimento com troca de sprite
def goto_animado(personagem: tl.Turtle, x: float, y: float, sprites: list[str], passos: int = 10):
posicao_inicial: tl.Vec2D = personagem.pos()
posicao_final: tl.Vec2D = tl.Vec2D(x, y)
for posicao in range(passos):
personagem.shape(sprites[posicao%len(sprites)]) #shape(sprites[posicao % 2]) # Alterna os sprites
personagem.goto(lerp(posicao_inicial, posicao_final, 1/(passos + 1) * posicao)) # Move a tartaruga
# Funcao para fazer as falas dos personagens
def falas(personagem: tl.Turtle, text: str, tempo: float = 3) -> None:
fala.goto(personagem.pos())
@@ -22,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: float = 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:
@@ -40,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")
@@ -52,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)
@@ -71,20 +132,20 @@ 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)
index = falar_do_roteiro(falas_dict[cena], index)
tl.addshape("sprites/personagens/_pinto.gif")
@@ -98,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()
@@ -130,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")
@@ -142,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")
@@ -157,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")
@@ -169,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")
@@ -196,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")
@@ -209,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")
@@ -221,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")
@@ -254,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)
@@ -278,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")
@@ -295,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")
@@ -306,11 +376,9 @@ def pinto_mata_cobra() -> str:
cobra.showturtle()
cobra.goto(150, -121)
falas(cobra, "Vou te pegar!", tempo = 1.5)
index = falar_do_roteiro(falas_dict[cena], index)
cobra.goto(5, -121)
falas(pinto, "Só que não!", tempo = 1.5)
tl.addshape("sprites/objetos/fogo.gif")
fogo.shape("sprites/objetos/fogo.gif")
@@ -318,7 +386,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.5)
pause(1.5)
@@ -327,8 +395,9 @@ 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, tempo = 1)
index = falar_do_roteiro(falas_dict[cena], index, tempo=4.5)
tl.addshape("sprites/personagens/pinto_.gif")
pinto.shape("sprites/personagens/pinto_.gif")
@@ -408,9 +477,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()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB