-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsprites.py
155 lines (125 loc) · 5.55 KB
/
sprites.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import pygame
from config import *
#definindo uma classe para cada tipo de bolinha
class bolinha_vermelha(pygame.sprite.Sprite):
def __init__(self, assets):
#Classe mãe
pygame.sprite.Sprite.__init__(self)
self.assets = assets
self.image= assets['vermelho']
self.rect = self.image.get_rect()
self.rect.x = WIDTH
self.rect.centery = HEIGHT/2
self.speedx = 18
def update(self,assets):
#Bolinha movimentando
self.rect.x -= self.speedx
class bolinha_azul(pygame.sprite.Sprite):
def __init__(self, assets):
#Classe mãe
pygame.sprite.Sprite.__init__(self)
self.assets = assets
self.image= assets['azul']
self.rect = self.image.get_rect()
self.rect.x = WIDTH
self.rect.centery = HEIGHT/2
self.speedx = 18
def update(self,assets):
#Bolinha movimentando
self.rect.x -= self.speedx
class bolinha_cinza(pygame.sprite.Sprite):
def __init__(self,assets):
# Construtor da classe mãe (Sprite).
pygame.sprite.Sprite.__init__(self)
self.image = assets['cinza']
self.rect = self.image.get_rect()
self.rect.x = WIDTH/4
self.rect.centery = HEIGHT/2
class Move_line(pygame.sprite.Sprite):
# Construtor da classe.
def __init__(self, assets):
# Construtor da classe mãe (Sprite).
pygame.sprite.Sprite.__init__(self)
self.image = assets['move_line']
self.rect = self.image.get_rect()
# Coloca no lugar inicial definido em x, y do constutor
self.rect.x = 0
self.rect.y = (HEIGHT/2)-(score_line_height/2)
class Explosion_r(pygame.sprite.Sprite):
# Construtor da classe.
def __init__(self, center, assets):
# Construtor da classe mãe (Sprite).
pygame.sprite.Sprite.__init__(self)
# Armazena a animação de explosão
self.explosion_anim = assets['explosion_anim_r']
# Inicia o processo de animação colocando a primeira imagem na tela.
self.frame = 0 # Armazena o índice atual na animação
self.image = self.explosion_anim[self.frame] # Pega a primeira imagem
self.rect = self.image.get_rect()
self.rect.center = center # Posiciona o centro da imagem
# Guarda o tick da primeira imagem, ou seja, o momento em que a imagem foi mostrada
self.last_update = pygame.time.get_ticks()
# Controle de ticks de animação: troca de imagem a cada self.frame_ticks milissegundos.
# Quando pygame.time.get_ticks() - self.last_update > self.frame_ticks a
# próxima imagem da animação será mostrada
self.frame_ticks = 50
def update(self, assets):
# Verifica o tick atual.
now = pygame.time.get_ticks()
# Verifica quantos ticks se passaram desde a ultima mudança de frame.
elapsed_ticks = now - self.last_update
# Se já está na hora de mudar de imagem...
if elapsed_ticks > self.frame_ticks:
# Marca o tick da nova imagem.
self.last_update = now
# Avança um quadro.
self.frame += 1
# Verifica se já chegou no final da animação.
if self.frame == len(self.explosion_anim):
# Se sim, tchau explosão!
self.kill()
else:
# Se ainda não chegou ao fim da explosão, troca de imagem.
center = self.rect.center
self.image = self.explosion_anim[self.frame]
self.rect = self.image.get_rect()
self.rect.center = center
class Explosion_b(pygame.sprite.Sprite):
# Construtor da classe.
def __init__(self, center, assets):
# Construtor da classe mãe (Sprite).
pygame.sprite.Sprite.__init__(self)
# Armazena a animação de explosão
self.explosion_anim = assets['explosion_anim_b']
# Inicia o processo de animação colocando a primeira imagem na tela.
self.frame = 0 # Armazena o índice atual na animação
self.image = self.explosion_anim[self.frame] # Pega a primeira imagem
self.rect = self.image.get_rect()
self.rect.center = center # Posiciona o centro da imagem
# Guarda o tick da primeira imagem, ou seja, o momento em que a imagem foi mostrada
self.last_update = pygame.time.get_ticks()
# Controle de ticks de animação: troca de imagem a cada self.frame_ticks milissegundos.
# Quando pygame.time.get_ticks() - self.last_update > self.frame_ticks a
# próxima imagem da animação será mostrada
self.frame_ticks = 50
def update(self, assets):
# Verifica o tick atual.
now = pygame.time.get_ticks()
# Verifica quantos ticks se passaram desde a ultima mudança de frame.
elapsed_ticks = now - self.last_update
# Se já está na hora de mudar de imagem...
if elapsed_ticks > self.frame_ticks:
# Marca o tick da nova imagem.
self.last_update = now
# Avança um quadro.
self.frame += 1
# Verifica se já chegou no final da animação.
if self.frame == len(self.explosion_anim):
# Se sim, tchau explosão!
self.kill()
else:
# Se ainda não chegou ao fim da explosão, troca de imagem.
center = self.rect.center
self.image = self.explosion_anim[self.frame]
self.rect = self.image.get_rect()
self.rect.center = center