From df817e2912ad82438958752cb95fc8fda3c8591d Mon Sep 17 00:00:00 2001 From: JustinOros Date: Mon, 25 Aug 2025 20:43:02 -0700 Subject: [PATCH] Added enemy detected sound (sound-tank-warning.mp3) --- tankwars-game/sound-tank-warning.mp3 | Bin 0 -> 33024 bytes tankwars-game/tankwars-game.py | 10 +++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tankwars-game/sound-tank-warning.mp3 diff --git a/tankwars-game/sound-tank-warning.mp3 b/tankwars-game/sound-tank-warning.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..771610afbd507d501445efed22a9ae55d7b47380 GIT binary patch literal 33024 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 T#DBMW^Zd{A|GR+v;D!GWru?GJ literal 0 HcmV?d00001 diff --git a/tankwars-game/tankwars-game.py b/tankwars-game/tankwars-game.py index ebf64d0..cb5b103 100644 --- a/tankwars-game/tankwars-game.py +++ b/tankwars-game/tankwars-game.py @@ -22,6 +22,7 @@ sound_move = pygame.mixer.Sound("sound-tank-movement.mp3") sound_turret = pygame.mixer.Sound("sound-tank-turret.mp3") sound_explosion = pygame.mixer.Sound("sound-tank-explosion.mp3") sound_alarm = pygame.mixer.Sound("sound-tank-alarm.mp3") +sound_warning = pygame.mixer.Sound("sound-tank-warning.mp3") pygame.mixer.music.load("music-track01.mp3") pygame.mixer.music.set_volume(0.5) @@ -125,7 +126,8 @@ def spawn_enemies(level): 'state':'rotating', 'move_timer':0, 'last_fire':0, - 'player_detected':False + 'player_detected':False, + 'warning_played':False }) break @@ -292,7 +294,13 @@ def move_enemies(dt): current_time = time.time() for e in enemies: distance_to_player = math.hypot(e['pos'][0]-player_pos[0], e['pos'][2]-player_pos[2]) + previously_detected = e['player_detected'] e['player_detected'] = distance_to_player <= 100 + + if e['player_detected'] and not previously_detected and not e['warning_played']: + sound_warning.play() + e['warning_played'] = True + if e['player_detected']: e['state'] = 'hunting' target_dx = player_pos[0] - e['pos'][0]