Skip to content

Commit 33f8bab

Browse files
committed
feat: damage indicator
1 parent 9d8e1f5 commit 33f8bab

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

assets/images/damaged.png

101 KB
Loading

game/components/player.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,22 @@ def __init__(self, game: "Game", name: str) -> None:
4444
self.time_to_heal = 0
4545
self.onFire = False
4646
self.beginInvincible = 0
47+
self.isInvincible = False
4748

4849
# Charge et cache toutes les animations de sprites
4950
self.sprites = self._load_all_sprites()
5051
self.current_sprite_index = 0.0
5152
self.image = self.sprites[self.direction][0]
5253
self.rect = self.image.get_rect(topleft=self.position)
5354

55+
self.damage_image = pygame.transform.scale(
56+
pygame.image.load("assets/images/damaged.png"),
57+
(
58+
self.game.settings.WINDOW_WIDTH,
59+
self.game.settings.WINDOW_HEIGHT,
60+
),
61+
).convert_alpha()
62+
5463
def _load_all_sprites(self) -> Dict[Direction, List[pygame.Surface]]:
5564
"""
5665
Charge toutes les animations de sprites pour chaque direction
@@ -243,12 +252,30 @@ def draw(self, screen: pygame.Surface) -> None:
243252
"""
244253
screen.blit(self.image, self.position)
245254

246-
def isAttacked(self):
255+
def isAttacked(self) -> None:
256+
"""
257+
Vérifie si le joueur est attaqué par un ennemi
258+
"""
247259
if not self.onFire and time() - self.beginInvincible >= 1:
260+
self.isInvincible = False
248261
for enemy in self.game.enemy_spawner.enemies_list:
249262
if self.rect.colliderect(enemy):
250263
self.damage(enemy.damage)
251264
self.beginInvincible = time()
265+
self.isInvincible = True
266+
267+
def draw_damage(self, screen: pygame.Surface) -> None:
268+
"""
269+
Dessine l'effet de dégâts sur l'écran
270+
271+
:param screen: La surface de l'écran
272+
:type screen: pygame.Surface
273+
"""
274+
if self.isInvincible:
275+
# Alpha depends on health
276+
alpha = 255 - (255 * self.health / self.MAX_HEALTH)
277+
self.damage_image.set_alpha(alpha)
278+
screen.blit(self.damage_image, (0, 0))
252279

253280
def on_fire(self):
254281
if self.onFire:

game/game.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ def optimized_draw(self) -> None:
267267

268268
# Affiche le joueur à sa nouvelle position
269269
self.player.draw(self.sprite_layer)
270+
self.player.draw_damage(self.sprite_layer)
270271

271272
self.screen.blit(self.background_layer, (0, 0))
272273
self.screen.blit(self.sprite_layer, (0, 0)) # Draw sprites

settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Settings:
1111
# =========================================================================
1212
WINDOW_WIDTH = 1000
1313
WINDOW_HEIGHT = 900
14-
IS_FULLSCREEN = True
14+
IS_FULLSCREEN = False
1515
FPS = 30
1616

1717
# =========================================================================

0 commit comments

Comments
 (0)