<commit_before># coding: utf-8
import time
from tkinter import PhotoImage, NW, Tk, Canvas
from tkinter.constants import ALL
import math
from os import path
import atores

from fase import Fase
from atores import PassaroVermelho, PassaroAmarelo, Porco, Obstaculo

ALTURA_DA_TELA = 600  # px

root = Tk()

IMAGES_PATH = path.dirname(__file__)
IMAGES_PATH = path.join(IMAGES_PATH, 'images')
PASSARO_VERMELHO = PhotoImage(file=path.join(IMAGES_PATH, "passaro_vermelho.gif"))
PASSARO_AMARELHO = PhotoImage(file=path.join(IMAGES_PATH, "passaro_amarelo.gif"))
PORCO = PhotoImage(file=path.join(IMAGES_PATH, "porco.gif"))
PORCO_MORTO = PhotoImage(file=path.join(IMAGES_PATH, "porco_morto.gif"))
OBSTACULO = PhotoImage(file=path.join(IMAGES_PATH, "obstaculo.gif"))
TRANSPARENTE = PhotoImage(file=path.join(IMAGES_PATH, "transparente.gif"))
BACKGROUND = PhotoImage(file=path.join(IMAGES_PATH, "background.gif"))
PYTHONBIRDS_LOGO = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-logo.gif"))
MENU = PhotoImage(file=path.join(IMAGES_PATH, "menu.gif"))
VOCE_GANHOU = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-voce-ganhou-popup.gif"))
VOCE_PERDEU = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-voce-perdeu-popup.gif"))

CARACTER_PARA__IMG_DCT = {'V': PASSARO_VERMELHO,
                          'A': PASSARO_AMARELHO,
                          '@': PORCO,
                          'O': OBSTACULO,
                          '+': PORCO_MORTO,
                          ' ': TRANSPARENTE}


def plotar(camada_de_atores, ponto):
    if ponto.caracter != ' ':
        x = ponto.x
        y = ALTURA_DA_TELA - ponto.y - 120  # para coincidir com o chao da tela
        image = CARACTER_PARA__IMG_DCT.get(ponto.caracter, TRANSPARENTE)
        camada_de_atores.create_image((x, y), image=image, anchor=NW)


def animar(tela, camada_de_atores, fase, passo=0.01, delta_t=0.01):
    tempo = 0
    passo = int(1000 * passo)
    angulo = 0

    def _animar():
        nonlocal tempo
        nonlocal angulo
        camada_de_atores.delete(ALL)
        camada_de_atores.create_image((0, 0), image=BACKGROUND, anchor=NW)
        tempo += delta_t
        tamanho_seta = 60
        angulo_rad = math.radians(-angulo)

        camada_de_atores.create_line(52, 493, 52 + tamanho_seta * math.cos(angulo_rad),
                                     493 + tamanho_seta * math.sin(angulo_rad), width=1.5)
        camada_de_atores.create_text(35, 493, text=u"%d°" % angulo)
        for ponto in fase.calcular_pontos(tempo):
            plotar(camada_de_atores, ponto)

        if fase.acabou(tempo):
            camada_de_atores.create_image(162, 55, image=PYTHONBIRDS_LOGO, anchor=NW)
            camada_de_atores.create_image(54, 540, image=MENU, anchor=NW)
            if 'ganhou' in fase.status(tempo):
                img = VOCE_GANHOU
            else:
                img = VOCE_PERDEU
            camada_de_atores.create_image(192, 211, image=img, anchor=NW)
        else:
            tela.after(passo, _animar)

    def _ouvir_comandos_lancamento(evento):
        nonlocal angulo
        if evento.keysym == 'Up':
            angulo += 1
        elif evento.keysym == 'Down':
            angulo -= 1
        elif evento.keysym == 'Return' or evento.keysym == 'space':
            fase.lancar(angulo, tempo)

    def _replay(event):
        # verificar se a fase ja acabou
        pass

    def _jogar_novamente(event):
        # verificar se a fase ja acabou
        pass

    def _finalizar(event):
        root.destroy()

    camada_de_atores.pack()
    _animar()
    tela.bind_all('<KeyPress>', _ouvir_comandos_lancamento)
    tela.bind_all('1', _replay)
    tela.bind_all('2', _jogar_novamente)
    tela.bind_all('3', _finalizar)
    tela.bind_all('<Escape>', _finalizar)

    tela.mainloop()
    tela.after(passo, _animar)
<commit_msg>Replay Funcionando!<commit_after># coding: utf-8
import time
from tkinter import PhotoImage, NW, Tk, Canvas
from tkinter.constants import ALL
import math
from os import path
import atores

from fase import Fase
from atores import PassaroVermelho, PassaroAmarelo, Porco, Obstaculo

ALTURA_DA_TELA = 600  # px

root = Tk()

IMAGES_PATH = path.dirname(__file__)
IMAGES_PATH = path.join(IMAGES_PATH, 'images')
PASSARO_VERMELHO = PhotoImage(file=path.join(IMAGES_PATH, "passaro_vermelho.gif"))
PASSARO_AMARELHO = PhotoImage(file=path.join(IMAGES_PATH, "passaro_amarelo.gif"))
PORCO = PhotoImage(file=path.join(IMAGES_PATH, "porco.gif"))
PORCO_MORTO = PhotoImage(file=path.join(IMAGES_PATH, "porco_morto.gif"))
OBSTACULO = PhotoImage(file=path.join(IMAGES_PATH, "obstaculo.gif"))
TRANSPARENTE = PhotoImage(file=path.join(IMAGES_PATH, "transparente.gif"))
BACKGROUND = PhotoImage(file=path.join(IMAGES_PATH, "background.gif"))
PYTHONBIRDS_LOGO = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-logo.gif"))
MENU = PhotoImage(file=path.join(IMAGES_PATH, "menu.gif"))
VOCE_GANHOU = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-voce-ganhou-popup.gif"))
VOCE_PERDEU = PhotoImage(file=path.join(IMAGES_PATH, "python-birds-voce-perdeu-popup.gif"))

CARACTER_PARA__IMG_DCT = {'V': PASSARO_VERMELHO,
                          'A': PASSARO_AMARELHO,
                          '@': PORCO,
                          'O': OBSTACULO,
                          '+': PORCO_MORTO,
                          ' ': TRANSPARENTE}


def plotar(camada_de_atores, ponto):
    if ponto.caracter != ' ':
        x = ponto.x
        y = ALTURA_DA_TELA - ponto.y - 120  # para coincidir com o chao da tela
        image = CARACTER_PARA__IMG_DCT.get(ponto.caracter, TRANSPARENTE)
        camada_de_atores.create_image((x, y), image=image, anchor=NW)


def animar(tela, camada_de_atores, fase, passo=0.01, delta_t=0.01):
    tempo = 0
    passo = int(1000 * passo)
    angulo = 0
    multiplicador_rebobinar = 20

    def _animar():
        nonlocal tempo
        nonlocal delta_t
        nonlocal angulo
        tempo += delta_t
        if tempo <= 0:
            tempo = 0
            delta_t /= -multiplicador_rebobinar
        if fase.acabou(tempo):
            camada_de_atores.create_image(162, 55, image=PYTHONBIRDS_LOGO, anchor=NW)
            camada_de_atores.create_image(54, 540, image=MENU, anchor=NW)
            if 'ganhou' in fase.status(tempo):
                img = VOCE_GANHOU
            else:
                img = VOCE_PERDEU
            camada_de_atores.create_image(192, 211, image=img, anchor=NW)
        else:
            camada_de_atores.delete(ALL)
            camada_de_atores.create_image((0, 0), image=BACKGROUND, anchor=NW)
            tamanho_seta = 60
            angulo_rad = math.radians(-angulo)

            camada_de_atores.create_line(52, 493, 52 + tamanho_seta * math.cos(angulo_rad),
                                         493 + tamanho_seta * math.sin(angulo_rad), width=1.5)
            camada_de_atores.create_text(35, 493, text=u"%d°" % angulo)
            for ponto in fase.calcular_pontos(tempo):
                plotar(camada_de_atores, ponto)
            tela.after(passo, _animar)

    def _ouvir_comandos_lancamento(evento):
        nonlocal angulo
        if evento.keysym == 'Up':
            angulo += 1
        elif evento.keysym == 'Down':
            angulo -= 1
        elif evento.keysym == 'Return' or evento.keysym == 'space':
            fase.lancar(angulo, tempo)

    def _replay(event):
        nonlocal tempo
        nonlocal delta_t
        if fase.acabou(tempo):
            delta_t *= -multiplicador_rebobinar
            _animar()


    def _jogar_novamente(event):
        # verificar se a fase ja acabou
        pass

    def _finalizar(event):
        root.destroy()

    camada_de_atores.pack()
    _animar()
    tela.bind_all('<KeyPress>', _ouvir_comandos_lancamento)
    tela.bind_all('1', _replay)
    tela.bind_all('2', _jogar_novamente)
    tela.bind_all('3', _finalizar)
    tela.bind_all('<Escape>', _finalizar)

    tela.mainloop()
    tela.after(passo, _animar)

{'fraction_non_alphanumeric': 0.11147417368354907, 'fraction_numerical': 0.015835113736332788, 'mean_word_length': 2.776934029425724, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1274441', 'n_tokens_mistral': 3099, 'n_tokens_neox': 2942, 'n_words': 506}