Compare commits

..

11 Commits

25 changed files with 170 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 module docs
""" """
import re
import turtle as tl import turtle as tl
from time import sleep as pause from time import sleep as pause
from menus import main_menu 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 # Funcao para fazer as falas dos personagens
def falas(personagem: tl.Turtle, text: str, tempo: float = 3) -> None: def falas(personagem: tl.Turtle, text: str, tempo: float = 3) -> None:
fala.goto(personagem.pos()) fala.goto(personagem.pos())
@@ -22,6 +72,14 @@ def falas(personagem: tl.Turtle, text: str, tempo: float = 3) -> None:
fala.undo() fala.undo()
count += 1 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: def pinto_acha_cobra() -> str:
""" """
Roteiro da cena 1: Roteiro da cena 1:
@@ -40,6 +98,9 @@ def pinto_acha_cobra() -> str:
Ambos saem de cena. Ambos saem de cena.
""" """
cena = "pinto_acha_cobra"
index = 0
terminou = "não" terminou = "não"
tl.addshape("sprites/fundos/fundo_1_bau_fechado.gif") tl.addshape("sprites/fundos/fundo_1_bau_fechado.gif")
@@ -52,8 +113,8 @@ def pinto_acha_cobra() -> str:
pinto.showturtle() pinto.showturtle()
pinto.goto(-132, -89) pinto.goto(-132, -89)
falas(pinto, "Eita, um baú totalmente estranho no meio\ndessa masmorra muito perigosa.") index = falar_do_roteiro(falas_dict[cena], index)
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)
pinto.goto(28, -89) pinto.goto(28, -89)
pinto.goto(31, -16) pinto.goto(31, -16)
@@ -71,20 +132,20 @@ def pinto_acha_cobra() -> str:
cobra.showturtle() cobra.showturtle()
pinto.goto(-160, -132) pinto.goto(-160, -132)
falas(pinto, "Vixe, uma cobra!") index = falar_do_roteiro(falas_dict[cena], index)
cobra.goto(-3, -62) 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) 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) 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") tl.addshape("sprites/personagens/_pinto.gif")
@@ -98,14 +159,14 @@ def pinto_acha_cobra() -> str:
pinto.shape("sprites/personagens/_pinto.gif") 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) pause(0.5)
pinto.goto(-281, -89) pinto.goto(-281, -89)
pinto.hideturtle() 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.goto(-281, -89)
cobra.hideturtle() cobra.hideturtle()
@@ -130,6 +191,9 @@ def pinto_foge_cobra() -> str:
Ambos fora de cena. Ambos fora de cena.
""" """
cena = "pinto_foge_cobra"
index = 0
terminou = "não" terminou = "não"
tl.addshape("sprites/fundos/fundo_2.gif") tl.addshape("sprites/fundos/fundo_2.gif")
@@ -142,7 +206,7 @@ def pinto_foge_cobra() -> str:
pinto.showturtle() pinto.showturtle()
pinto.goto(2, -28) 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") tl.addshape("sprites/personagens/pinto_.gif")
pinto.shape("sprites/personagens/pinto_.gif") pinto.shape("sprites/personagens/pinto_.gif")
@@ -157,7 +221,7 @@ def pinto_foge_cobra() -> str:
cobra.showturtle() cobra.showturtle()
cobra.goto(2, -28) 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") tl.addshape("sprites/personagens/cobra_.gif")
@@ -169,7 +233,7 @@ def pinto_foge_cobra() -> str:
pause(0.15) pause(0.15)
count += 1 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") cobra.shape("sprites/personagens/cobra_.gif")
@@ -196,6 +260,9 @@ def pinto_acha_arma() -> str:
A cobra segue o pinto. Todos saem de cena. A cobra segue o pinto. Todos saem de cena.
""" """
cena = "pinto_acha_arma"
index = 0
terminou = "não" terminou = "não"
tl.addshape("sprites/fundos/fundo_3_bau_fechado.gif") tl.addshape("sprites/fundos/fundo_3_bau_fechado.gif")
@@ -209,7 +276,7 @@ def pinto_acha_arma() -> str:
pinto.showturtle() pinto.showturtle()
pinto.goto(0, -16) 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") 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.goto(0, 64)
lanca_chamas.showturtle() lanca_chamas.showturtle()
falas(pinto, "Isso com certeza vai servir!") index = falar_do_roteiro(falas_dict[cena], index)
lanca_chamas.hideturtle() lanca_chamas.hideturtle()
tl.addshape("sprites/personagens/_pinto_flamer.gif") tl.addshape("sprites/personagens/_pinto_flamer.gif")
@@ -254,7 +321,7 @@ def pinto_acha_arma() -> str:
cobra.showturtle() cobra.showturtle()
cobra.goto(0, 0) cobra.goto(0, 0)
falas(cobra, "Eu achei você!", tempo = 1.8) index = falar_do_roteiro(falas_dict[cena], index)
cobra.goto(-352, 0) cobra.goto(-352, 0)
pause(2) pause(2)
@@ -278,6 +345,9 @@ def pinto_mata_cobra() -> str:
Ele sai da cena. Ele sai da cena.
""" """
cena = "pinto_mata_cobra"
index = 0
terminou = "não" terminou = "não"
tl.addshape("sprites/fundos/fundo_4.gif") tl.addshape("sprites/fundos/fundo_4.gif")
@@ -295,7 +365,7 @@ def pinto_mata_cobra() -> str:
tl.addshape("sprites/personagens/pinto_flamer_.gif") tl.addshape("sprites/personagens/pinto_flamer_.gif")
pinto.shape("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") tl.addshape("sprites/personagens/_cobra.gif")
cobra.shape("sprites/personagens/_cobra.gif") cobra.shape("sprites/personagens/_cobra.gif")
@@ -306,19 +376,17 @@ def pinto_mata_cobra() -> str:
cobra.showturtle() cobra.showturtle()
cobra.goto(150, -121) cobra.goto(150, -121)
falas(cobra, "Vou te pegar!", tempo = 1.5) index = falar_do_roteiro(falas_dict[cena], index)
cobra.goto(5, -121) cobra.goto(5, -121)
falas(pinto, "Só que não!", tempo = 1.5)
tl.addshape("sprites/objetos/fogo.gif") tl.addshape("sprites/objetos/fogo.gif")
fogo.shape("sprites/objetos/fogo.gif") fogo.shape("sprites/objetos/fogo.gif")
fogo.goto(-50, -121) fogo.goto(-50, -121)
fogo.showturtle() fogo.showturtle()
falas(cobra, "AHHHHHHHHHHHHH!", tempo = 1) index = falar_do_roteiro(falas_dict[cena], index, tempo=1.5)
pause(1.5) pause(1.5)
@@ -327,8 +395,9 @@ def pinto_mata_cobra() -> str:
fogo.hideturtle() fogo.hideturtle()
falas(pinto, 'Parece que agora eu não\nsou o "pequeno pinto", né?', tempo = 4.5) index = falar_do_roteiro(falas_dict[cena], index, tempo = 1)
falas(pinto, "Vou voltar a explorar essa masmorra maneira.")
index = falar_do_roteiro(falas_dict[cena], index, tempo=4.5)
tl.addshape("sprites/personagens/pinto_.gif") tl.addshape("sprites/personagens/pinto_.gif")
pinto.shape("sprites/personagens/pinto_.gif") pinto.shape("sprites/personagens/pinto_.gif")
@@ -408,9 +477,11 @@ if __name__ == "__main__":
fala = tl.Turtle(visible=False) fala = tl.Turtle(visible=False)
fala.up() fala.up()
falas_dict = ler_falas("falas.txt")
index = 0
main() #chamando funcao principal main() #chamando funcao principal
tl.mainloop() tl.mainloop()
+43
View File
@@ -0,0 +1,43 @@
Roteiro da cena 1:
> Lugar misterioso com um baú. O pinto entra na cena. "Eita, um baú totalmente estranho no meio dessa masmorra super perigosa."
"Baús são legais. Com certeza deve ter algo legal dentro. Vou ver o que tem nele." - Diz o pinto.
O pinto vai até o baú e tenta abrir ele.
O baú abre e sai uma cobra de dentro.
"Vixe, uma cobra!" - Diz o pinto se afastando do baú.
"Tenha calma pequeno pinto. Eu não sou uma cobra má." - Diz a cobra saindo do baú.
"Por que eu deveria acreditar em você?" - Diz o pinto se afastando.
"Porque o meu nome é Python! Cobras com esse nome são confiáveis..." - Diz a cobra.
"Tipo aquela linguagem de programação?" - Pergunta o pinto.
"Isso mesmo!" - Responde a cobra.
"Eu não quero fazer programa!!!" - Diz o pinto enquanto sai de cena
"Volte aqui pintinho, eu não vou fazer você programar!" - Diz a acobra correndo atrás do pinto.
Ambos saem de cena.
Roteiro da cena 2:
> Um lugar da masmorra sombria. Esse lugar tem mais de uma saída. Tem paredes e obstáculos.
O pinto aparece correndo da cobra. "Ainda bem que eu já passei por aqui!" - Diz ele.
O pinto então passa pelos lugares certos e vai na direção de cima.
Enquanto isso a cobra chega no lugar e fica "perdida". "Que lugar estranho! No baú era melhor." - Diz ela.
Não sabendo para onde foi o pinto, ela diz - "Não sei para onde esse pinto foi..."
Então ela vai para baixo.
Ambos fora de cena.
Roteiro da cena 3:
> Nessa cena o pinto chega em uma nova sala estranha com um baú.
"Nossa, outro baú muito perigoso nessa masmorra. Vou abrir!" - Diz o pinto indo em direção ao baú.
O pinto vai até o baú e após abrir ele, acha um lança-chamas.
"Isso com certeza vai servir!" - Diz ele segurando a arma e indo para uma outra sala.
O pinto na outra sala vai para a sala da esquerda.
A cobra sai debaixo e fala - "Eu achei você!" - Depois ela vai para a sala.
A cobra segue o pinto. Todos saem de cena.
Roteiro da cena 4:
> O pinto com a sua arma chega na nova sala da masmorra e fica mirando para a porta esperando a cobra.
"Daqui não tem como errar..." - Diz o pinto.
A cobra chega na sala indo em direção ao pinto. "Vou te alcançar!" Diz ela.
Com a cobra se aproximando do pinto. O pinto aperta o gatilho e sai uma rajada de fogo na cobra; ela morre cremada.
"Parece que agora eu não sou o 'pequeno pinto', né?" Diz o pinto.
O pinto deixa o lança chamas no chão.
"Vou voltar a explorar essa masmorra legal." Diz o pinto.
Ele sai da cena.
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