-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclaseEnemigo.py
219 lines (171 loc) · 7.78 KB
/
claseEnemigo.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
import pygame as pg
import random
from mainVariables import ANCHO,ALTO, VERDE
from claseControladorSonido import ControladorSonido
imagenes_zombieVerde_correrDerecha = [
pg.image.load("imagenes/zombies/zombies_verde_der_1.png"),
pg.image.load("imagenes/zombies/zombies_verde_der_2.png"),
pg.image.load("imagenes/zombies/zombies_verde_der_3.png"),
pg.image.load("imagenes/zombies/zombies_verde_der_4.png"),
pg.image.load("imagenes/zombies/zombies_verde_der_5.png")
]
imagenes_zombieVerde_morderDerecha = [
pg.image.load("imagenes/zombies/zombies_verde_morder_1.png"),
pg.image.load("imagenes/zombies/zombies_verde_morder_2.png"),
]
imagenes_zombieMorado_correrIzquierda = [
pg.image.load("imagenes/zombies/zombies_morado_izq_1.png"),
pg.image.load("imagenes/zombies/zombies_morado_izq_2.png"),
pg.image.load("imagenes/zombies/zombies_morado_izq_3.png"),
pg.image.load("imagenes/zombies/zombies_morado_izq_4.png"),
pg.image.load("imagenes/zombies/zombies_morado_izq_5.png")
]
imagenes_zombieMorado_morderIzquierda = [
pg.image.load("imagenes/zombies/zombies_morado_izq_morder_1.png"),
pg.image.load("imagenes/zombies/zombies_morado_izq_morder_2.png")
]
class Enemigos_verdes(pg.sprite.Sprite):
def __init__(self):
super().__init__() # heredar de la clase Sprite
self.image = pg.transform.scale(pg.image.load("imagenes/exterminador/Gunner_Blue_Idle_1.png"),(100,50))
self.rect = self.image.get_rect()
# poner una radio para coliciones mas precisas
self.radius = 27 # tiene que ser radius
pg.draw.circle(self.image, VERDE,self.rect.center,self.radius,5) # dibujamos ese radio
# posicion aleatoria respecto a la pantalla
self.rect.x = random.randint(0,ANCHO//2) #para que solo puedan aparecer desde el margen izquierdo hasta la mitad
self.rect.y = random.randrange(0,ALTO)
# velocidad del personaje(inicial)
self.velocidad_x = 4
self.velocidad_y = 4
# contar Frames
self.framesEnemigo_corriendo = 0 #contar los frames del enemigo corriendo
self.framesEnemigo_mordiendo = 0 #contar los frames del enemigo mordiendo
#booleno Saber si esta mordiendo
self.estarMordiendo = False
# sonido Mordida
self.sonido_mordida = pg.mixer.Sound("musica/mordida.mp3")
# vida del enemigo
self.vidaEnemigo = 4
def update(self):
# importar el controlador de sonido para saber que poner
from mainVariables import controladorSonido
es_volumen_nulo = controladorSonido.es_volumen_nulo
self.rect.y += self.velocidad_x
self.rect.x += self.velocidad_y
if self.estarMordiendo:
self.cambioImagenMordida()
# print("zombie verde volumen nulo: " + f"{es_volumen_nulo}")
# si el volumen_nulo es igual a false
if es_volumen_nulo == False:
self.sonidoMordida(controladorSonido) # aqui ya cambia el volumen y hace el play
else:
pass
self.cambiarEstadoEstarMordiendo(False)
else:
# control_sprites
if self.framesEnemigo_corriendo >= 5: # son 5 sprites
self.framesEnemigo_corriendo = 0
# cambiar imagen
self.image = pg.transform.scale((imagenes_zombieVerde_correrDerecha[self.framesEnemigo_corriendo]), (50,60))
self.framesEnemigo_corriendo += 1
## Limites o margenes
# margen derecho
if self.rect.right > ANCHO:
self.rect.left = 0
# margen abajo
if self.rect.bottom > ALTO:
self.rect.top = 0
# margen arriba
if self.rect.top < 0:
self.rect.bottom = ALTO
# no hay izquierdo porque estos enemigos solo se mueven en posicion(positiva)
# si no tiene vida, borrar sprite
if self.vidaEnemigo <=0:
self.kill()
def sonidoMordida(self, controlador:ControladorSonido):
self.sonido_mordida.set_volume(controlador.volumen_actual)
self.sonido_mordida.play()
def cambioImagenMordida(self):
# control_sprites
if self.framesEnemigo_mordiendo >= 2: # son 2 sprites
self.framesEnemigo_mordiendo = 0
self.image = pg.transform.scale((imagenes_zombieVerde_morderDerecha[self.framesEnemigo_mordiendo]), (50,60))
self.framesEnemigo_mordiendo += 1
def cambiarEstadoEstarMordiendo(self, value:bool):
self.estarMordiendo = value
def quitarVida(self, dano:int):
self.vidaEnemigo -= dano
class Enemigos_morado(pg.sprite.Sprite):
def __init__(self):
super().__init__() # heredar de la clase Sprite
self.image = pg.transform.scale(pg.image.load("imagenes/exterminador/Gunner_Blue_Idle_1.png"),(100,50))
self.rect = self.image.get_rect()
# poner una radio para coliciones mas precisas
self.radius = 27 # tiene que ser radius
pg.draw.circle(self.image, VERDE,self.rect.center,self.radius,5) # dibujamos ese radio
# posicion aleatoria respecto a la pantalla
self.rect.x = random.randint(0,ANCHO//2)
self.rect.y = random.randrange(0,ALTO)
# velocidad del personaje(inicial)
self.velocidad_x = 5
self.velocidad_y = 5
# contar Frames
self.framesEnemigo_corriendo = 0 #contar los frames del enemigo corriendo
self.framesEnemigo_mordiendo = 0 #contar los frames del enemigo mordiendo
#booleno Saber si esta mordiendo
self.estarMordiendo = False
# poner musica
self.sonido_mordida = pg.mixer.Sound("musica/mordida.mp3")
# vida del enemigo
self.vidaEnemigo = 4
def update(self):
# importar el controlador de sonido para saber que poner
from mainVariables import controladorSonido
es_volumen_nulo = controladorSonido.es_volumen_nulo
self.rect.y -= self.velocidad_x
self.rect.x -= self.velocidad_y
if self.estarMordiendo:
self.cambioImagenMordida()
# si el volumen_nulo es igual a false
if es_volumen_nulo == False:
self.sonidoMordida(controladorSonido)
else:
pass
self.cambiarEstadoEstarMordiendo(False)
else:
# control_sprites
if self.framesEnemigo_corriendo >= 5: # son 5 sprites
self.framesEnemigo_corriendo = 0
# cambiar imagen solo de correr
self.image = pg.transform.scale((imagenes_zombieMorado_correrIzquierda[self.framesEnemigo_corriendo]), (50,60))
self.framesEnemigo_corriendo += 1
## Limites o maregnes
# margen derecho
if self.rect.right > ANCHO:
self.rect.left = 0
# margen izquierdo
if self.rect.left < 0:
self.rect.right = ANCHO
# margen abajo
if self.rect.bottom > ALTO:
self.rect.top = 0
# margen arriba
if self.rect.top < 0:
self.rect.bottom = ALTO
# si no tiene vida, borrar sprite
if self.vidaEnemigo <=0:
self.kill()
def sonidoMordida(self, controlador:ControladorSonido):
self.sonido_mordida.set_volume(controlador.volumen_actual)
self.sonido_mordida.play()
def cambioImagenMordida(self):
# control_sprites
if self.framesEnemigo_mordiendo >= 2: # son 2 sprites
self.framesEnemigo_mordiendo = 0
self.image = pg.transform.scale((imagenes_zombieMorado_morderIzquierda[self.framesEnemigo_mordiendo]), (50,60))
self.framesEnemigo_mordiendo += 1
def cambiarEstadoEstarMordiendo(self, value:bool):
self.estarMordiendo = value
def quitarVida(self, dano:int):
self.vidaEnemigo -= dano