diff --git a/music/QonsVivaEveryone.mp3 b/music/QonsVivaEveryone.mp3 new file mode 100755 index 0000000..b74d756 Binary files /dev/null and b/music/QonsVivaEveryone.mp3 differ diff --git a/snake.py b/snake.py index 5876fd3..589a45a 100644 --- a/snake.py +++ b/snake.py @@ -21,6 +21,7 @@ class Game: self.snake_speed = 7 self.enable_effects = True self.enable_music = False + self.music_started_once = False # Snake and food characters # ASCII Table: https://theasciicode.com.ar/ @@ -80,7 +81,12 @@ class Game: # Start music if self.enable_music: - self.queue.put('music.start') + if self.music_started_once: + self.music_unpause() + else: + self.music_start() + else: + self.music_pause() # Start game!!! self.start_game() @@ -95,27 +101,10 @@ class Game: # Calculate snake speed wait_for_input_ms = { - 1: 250, - 2: 225, - 3: 200, - 4: 175, - 5: 150, - 6: 125, - 7: 100, - 8: 75, - 9: 50, - 10: 25 + 1: 250, 2: 225, 3: 200, + 4: 175, 5: 150, 6: 125, + 7: 100, 8: 75, 9: 50, 10: 25 } - # if self.snake_speed == 1: wait_for_input_ms = 250 - # if self.snake_speed == 2: wait_for_input_ms = 225 - # if self.snake_speed == 3: wait_for_input_ms = 200 - # if self.snake_speed == 4: wait_for_input_ms = 175 - # if self.snake_speed == 5: wait_for_input_ms = 150 - # if self.snake_speed == 6: wait_for_input_ms = 125 - # if self.snake_speed == 7: wait_for_input_ms = 100 - # if self.snake_speed == 8: wait_for_input_ms = 75 - # if self.snake_speed == 9: wait_for_input_ms = 50 - # if self.snake_speed == 10: wait_for_input_ms = 25 self.stdscr.timeout(wait_for_input_ms[self.snake_speed]) # Ensure window is large enough @@ -157,23 +146,36 @@ class Game: # RIGHT elif next_key == curses.KEY_RIGHT and key != curses.KEY_LEFT: key = next_key - # (P)ause - elif next_key == ord('p'): + # ESCAPE Menu + elif next_key == 27: previous_key = key - self.print_center("Game Paused. Press P to Resume.") + if self.enable_music: self.music_pause() + self.print_center(f"GAME PAUSED...", 0, self.colors['red']) + self.print_center(f"ESC Resume, (R)estart, (Q)uit, (M)enu", 2, self.colors['green']) while True: key = self.stdscr.getch() - if key == ord('p'): + if key == 27: break + elif key == ord('r'): + if self.enable_music: self.music_unpause() + self.start_game() + return + elif key == ord('q'): + self.exit_game() + elif key == ord('m'): + self.load() + return + # Resume key = previous_key + if self.enable_music: self.music_unpause() continue # (R)estart elif next_key == ord('r'): self.start_game() return - # (Q)uit - elif next_key == ord('q'): - break + # # (Q)uit + # elif next_key == ord('q'): + # break # Calculate new head head = snake[0] @@ -237,16 +239,21 @@ class Game: # Game Over screen self.effect('over') self.print_center(f"GAME OVER! SCORE: {score}", 0, self.colors['red']) - self.print_center(f"(R)estart, or (Q)uit", 2, self.colors['green']) + self.print_center(f"(R)estart, (Q)uit, (M)enu", 2, self.colors['green']) self.stdscr.nodelay(0) + #if self.enable_music: self.music_pause() while True: key = self.stdscr.getch() if key == ord('r'): + #if self.enable_music: self.music_unpause() self.start_game() return elif key == ord('q'): # Game over, exit app! self.exit_game() + elif key == ord('m'): + self.load() + return def print_center(self, value, y_offset = 0, color = 3): @@ -346,6 +353,19 @@ class Game: if self.enable_effects: self.queue.put(effect) + def music_start(self): + self.music_started_once = True + self.queue.put('music.start') + + def music_stop(self): + self.queue.put('music.stop') + + def music_pause(self): + self.queue.put('music.pause') + + def music_unpause(self): + self.queue.put('music.unpause') + def main(stdscr, queue): game = Game(stdscr, queue) @@ -367,8 +387,8 @@ def sound_process(sound_queue): # Load sounds/music (adjust file paths as needed) # Use .wav or .ogg for better compatibility #effect = pygame.mixer.Sound('effects/bing.mp3') - #music_file = 'music/Guitar_Sound.mp3' - music_file = 'music/s.mp3' + music_file = 'music/QonsVivaEveryone.mp3' + #music_file = 'music/s.mp3' while True: if not sound_queue.empty(): @@ -386,6 +406,10 @@ def sound_process(sound_queue): pygame.mixer.music.play(-1) # Play music indefinitely elif command == 'music.stop': pygame.mixer.music.stop() + elif command == 'music.pause': + pygame.mixer.music.pause(); + elif command == 'music.unpause': + pygame.mixer.music.unpause(); # Quit came elif command == 'quit':