1- #coding: utf-8
1+ # coding: utf-8
22import time
33
44from tkinter import *
55from tkinter import ttk
66from fase import Fase
77from atores import PassaroVermelho , PassaroAmarelo , Porco , Obstaculo
8+ from fase_tkinter import FaseTk
89
910
1011def get_angulo (event ):
@@ -13,31 +14,10 @@ def get_angulo(event):
1314 popup_angulo .destroy ()
1415
1516
16- root = Tk ()
17- root .title ("Python Birds" )
18- root .geometry ("800x600" )
19- root .resizable (0 , 0 )
17+ ALTURA_DA_TELA = 600 # px
2018
21- stage = Canvas (root , width = 800 , height = 600 )
22- bg_image = PhotoImage (file = "images/background.gif" )
23- stage .create_image ((0 , 0 ), image = bg_image , anchor = NW )
24- stage .pack ()
2519
26- passaro_vermelho_img = PhotoImage (file = "images/passaro_vermelho.gif" )
27- passaro_vermelho = stage .create_image ((40 , 482 ), image = passaro_vermelho_img , anchor = NW )
2820
29- passaro_amarelo_img = PhotoImage (file = "images/passaro_amarelo.gif" )
30- passaro_amarelo = stage .create_image ((30 , 482 ), image = passaro_amarelo_img , anchor = NW )
31-
32- passaro_amarelo2 = stage .create_image ((20 , 482 ), image = passaro_amarelo_img , anchor = NW )
33-
34- porco_img = PhotoImage (file = "images/porco.gif" )
35- porco = stage .create_image ((700 , 482 ), image = porco_img , anchor = NW )
36-
37- porco2 = stage .create_image ((480 , 482 ), image = porco_img , anchor = NW )
38-
39- obstaculo_img = PhotoImage (file = "images/obstaculo.gif" )
40- obstaculo = stage .create_image ((300 , 300 ), image = obstaculo_img , anchor = NW )
4121
4222
4323# popup_angulo = Toplevel(root)
@@ -48,59 +28,56 @@ def get_angulo(event):
4828# b.pack(pady=5)
4929
5030
51- def mover (obj , x , y ):
52- stage .move (obj , x , y )
53- stage .update ()
5431
55- tempo = 0
56- passo = 0.1
57- delta_t = 0.1
5832
59- passaros = [passaro_vermelho , passaro_amarelo ]
60- fase = None
6133
62- ultima_posicao = {}
6334
64- def mover (canvas_id , posicao_atual , proxima_posicao ):
65- if proxima_posicao .y == 0 :
66- return
35+ def plotar (canvas , ponto ):
36+ multiplicador = 10 # 10 px/m
37+ x = multiplicador * ponto .x
38+ y = ALTURA_DA_TELA - ponto .y * multiplicador - 11 * multiplicador
39+ canvas .coords (ponto .canvas_img_id , (x , y ))
6740
68- x = posicao_atual .x - proxima_posicao .x
69- y = posicao_atual .y - proxima_posicao .y
70- stage .move (canvas_id , - x * 30 , y * 30 )
7141
72- def animar ():
73- global tempo , delta_t , fase
74- tempo += delta_t
75- time .sleep (passo )
76- pontos_cartesianos = fase .calcular_pontos (tempo )
77- for ponto in pontos_cartesianos :
78- canvas_id = ponto .canvas
79- ultima_posicao [canvas_id ] = ultima_posicao .get (canvas_id , ponto )
80- mover (canvas_id , ultima_posicao [canvas_id ], ponto )
81- #verificar aqui colisão
42+ def animar (tela ,fase ,passo = 0.1 , delta_t = 0.1 ):
43+ tempo = 0
44+ def _animar ():
45+ nonlocal tempo
46+ tempo += delta_t
47+ time .sleep (passo )
48+ for ponto in fase .calcular_pontos (tempo ):
49+ plotar (fase .canvas , ponto )
50+ tela .after (1 , _animar )
8251
8352
84- ultima_posicao [canvas_id ] = ponto
8553
86- root .after (1 , animar )
54+ tela .after (1 , _animar )
55+ tela .mainloop ()
8756
8857
89- fase = Fase ()
90- passaros = [PassaroVermelho (3 , 3 , passaro_vermelho ), PassaroAmarelo (3 , 3 , passaro_amarelo ), PassaroAmarelo (3 , 3 , passaro_amarelo2 )]
91- porcos = [Porco (78 , 1 , porco ), Porco (78 , 1 , porco2 )]
92- obstaculos = [Obstaculo (31 , 10 , obstaculo )]
58+ if __name__ == '__main__' :
59+ root = Tk ()
60+ root .title ("Python Birds" )
61+ root .geometry ("800x600" )
62+ root .resizable (0 , 0 )
9363
94- fase .adicionar_passaro (* passaros )
95- fase .adicionar_porco (* porcos )
96- fase .adicionar_obstaculo (* obstaculos )
64+ stage = Canvas (root , width = 800 , height = ALTURA_DA_TELA )
65+ bg_image = PhotoImage (file = "images/background.gif" )
66+ stage .create_image ((0 , 0 ), image = bg_image , anchor = NW )
67+ stage .pack ()
68+ fase = FaseTk (stage )
69+ passaros = [PassaroVermelho (3 , 3 ), PassaroAmarelo (3 , 3 ), PassaroAmarelo (3 , 3 )]
70+ porcos = [Porco (75 , 1 ), Porco (70 , 1 )]
71+ obstaculos = [Obstaculo (31 , 10 )]
9772
73+ fase .adicionar_passaro (* passaros )
74+ fase .adicionar_porco (* porcos )
75+ fase .adicionar_obstaculo (* obstaculos )
9876
99- fase .lancar (45 , 1 )
100- fase .lancar (64 , 2 )
101- fase .lancar (23 , 3 )
77+ fase .lancar (45 , 1 )
78+ fase .lancar (64 , 2 )
79+ fase .lancar (23 , 3 )
10280
103- root .after (1 , animar )
104- root .mainloop ()
81+ animar (root ,fase )
10582
106- # root.wait_window(popup_angulo)
83+ # root.wait_window(popup_angulo)
0 commit comments