diff --git a/libstorm_games.py b/libstorm_games.py index 49e516e..fc6d4ab 100755 --- a/libstorm_games.py +++ b/libstorm_games.py @@ -119,14 +119,51 @@ def display_text(text): event = pygame.event.clear() time.sleep(0.001) +def learn_sounds(sounds): + loop = True + pygame.mixer.music.pause() + i = 0 + soundFiles = [f for f in listdir("sounds/") if isfile(join("sounds/", f)) and (f.split('.')[1].lower() in ["ogg","wav"]) and (f.split('.')[0].lower() not in ["game-intro", "music_menu"])] + # j keeps track of last spoken index so it isn't voiced on key up. + j = -1 + while loop == True: + if i != j: + speak(soundFiles[i][:-4]) + j = i + event = pygame.event.wait() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: return "menu" + if event.key == pygame.K_DOWN and i < len(soundFiles) - 1: + i = i + 1 + if event.key == pygame.K_UP and i > 0: + i = i - 1 + if event.key == pygame.K_RETURN: + try: + soundName = soundFiles[i][:-4] + sounds[soundName].play() + continue + except: + j = -1 + speak("Could not play sound.") + continue + event = pygame.event.clear() + time.sleep(0.001) + def game_menu(*options): loop = True - pygame.mixer.music.load("sounds/music_menu.ogg") - pygame.mixer.music.set_volume(0.75) - pygame.mixer.music.play(-1) + if pygame.mixer.music.get_busy(): + pygame.mixer.music.unpause() + else: + pygame.mixer.music.load("sounds/music_menu.ogg") + pygame.mixer.music.set_volume(0.75) + pygame.mixer.music.play(-1) i = 0 - speak(options[i]) + # j keeps track of last spoken index so it isn't voiced on key up. + j = -1 while loop == True: + if i != j: + speak(options[i]) + j = i event = pygame.event.wait() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: exit_game() @@ -138,12 +175,13 @@ def game_menu(*options): if options[i] != "donate": pygame.mixer.music.unpause() if event.key == pygame.K_RETURN: try: + j = -1 eval(options[i] + "()") continue except: + j = -1 return options[i] continue - speak(options[i]) event = pygame.event.clear() time.sleep(0.001) diff --git a/numnastics b/numnastics index bcb1984..e99a657 100755 --- a/numnastics +++ b/numnastics @@ -59,9 +59,10 @@ def game(mode): return "menu" # Game starts at main menu -mode = game_menu("start game", "instructions", "donate", "credits", "exit_game") +mode = game_menu("start game", "instructions", "donate", "credits", "learn sounds", "exit_game") while mode != "exit_game": - if mode == "menu": mode = game_menu("start game", "instructions", "donate", "credits", "exit_game") + if mode == "menu": mode = game_menu("start game", "instructions", "donate", "credits", "learn sounds", "exit_game") if mode == "start game": mode = game(mode) + if mode == "learn sounds": mode = learn_sounds(sounds) time.sleep(.001)