diff --git a/broadcasters/__init__.py b/broadcasters/__init__.py index fffab4e..3ef766f 100644 --- a/broadcasters/__init__.py +++ b/broadcasters/__init__.py @@ -31,10 +31,32 @@ def start_outputs(system_queue, demo_output_queue): logger.warning("Unable to import modules necessary to run MQTT output.") logger.warning("Program will continue to run without this output.") + try: + logger.info("Loading pygame.mixer output...") + from . import pygame_mixer_bc + + pygame_mixer_q = Queue() + + pygame_mixer_runner = None + if pygame_mixer_bc.check_if_available(): + pygame_mixer_runner = pygame_mixer_bc.start_processing_output( + system_queue, pygame_mixer_q + ) + logger.info("...done") + except (ImportError, ModuleNotFoundError) as e: + pygame_mixer_runner = None + logger.warning(e) + logger.warning("Unable to import modules necessary to run keyboard input.") + logger.warning("Program will continue to run without this input.") + while True: for payload in utils.get_all_from_queue(demo_output_queue): if mqtt_runner: mqtt_q.put(payload) next(mqtt_runner) + if pygame_mixer_runner: + pygame_mixer_q.put(payload) + next(pygame_mixer_runner) + yield diff --git a/broadcasters/pygame_mixer_bc.py b/broadcasters/pygame_mixer_bc.py new file mode 100644 index 0000000..a891917 --- /dev/null +++ b/broadcasters/pygame_mixer_bc.py @@ -0,0 +1,45 @@ +from loguru import logger +from pygame import mixer + +from . import utils + + +def check_if_available(): + try: + mixer.init() + return True + except: + return False + + +def start_processing_output(system_queue, pygame_mixer_q): + """Called by the broadcaster module to initialize a connection to a loudspeaker local to the system.""" + + def process(): + # Go through and see what sounds we need to add + while True: + try: + for item in utils.get_all_from_queue(pygame_mixer_q): + logger.debug("pygame_mixer: {}", item) + if str(item).startswith("SOUND "): + new_sound = str(item)[6:] + + short_Sound = mixer.Sound(new_sound) + short_Sound.play() + + # if new_sound != current_sound: + # current_sound = new_sound + # mixer.Sound.load(new_sound) + # mixer.Sound.play() + elif str(item).startswith("BACKGROUND SOUND "): + new_sound = str(item)[17:] + mixer.music.load(new_sound) + mixer.music.play(-1) + elif str(item).startswith("STOP SOUND"): + mixer.music.stop() + except: + logger.warning("Unable to play sound file: {}".format(new_sound)) + + yield + + return process() diff --git a/demos/breakout/main.py b/demos/breakout/main.py index 0223cf1..bab3f04 100644 --- a/demos/breakout/main.py +++ b/demos/breakout/main.py @@ -2,6 +2,7 @@ from random import getrandbits from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds ARENA_START = 14 ARENA_END = ARENA_START - 15 @@ -73,6 +74,7 @@ def run(self): while True: try: if self.input_queue.get(block=False) == "START_P": + self.output_queue.put("SOUND " + sss_sounds.BEEP_06_GOOD) break except queue.Empty: pass @@ -143,6 +145,8 @@ def run(self): score += SCORE_INC self.output_queue.put("SCORE " + str(score)) + self.output_queue.put("SOUND " + sss_sounds.TICK) + self.bricks[row].remove(self.ball[0]) screen.draw_pixel(self.ball[0], row, PIXEL_OFF) if not self.ball[0] % 2: @@ -161,6 +165,8 @@ def run(self): self.output_queue.put("LIVES " + str(lives)) self.init_screen(screen) + self.output_queue.put("SOUND " + sss_sounds.LEVEL_UP) + screen.draw_pixel(self.ball[0], self.ball[1], PIXEL_OFF) # Bounds check for ball @@ -178,6 +184,8 @@ def run(self): self.frame_rate = 20 + (spin // (1 + spin // 2)) is_down = False + self.output_queue.put("SOUND " + sss_sounds.BEEP_15) + # Checks to see if ball falls out of screen if self.ball[1] >= screen.y_height - 1: is_down = True @@ -191,9 +199,13 @@ def run(self): ) if lives == 0: self.gameover = True + + self.output_queue.put("SOUND " + sss_sounds.END_FAIL_7) break self.ball = [screen.x_width // 2, screen.y_height // 2] + self.output_queue.put("SOUND " + sss_sounds.END_FAIL_6) + # Calculates ball path is_left, is_down = self.ball_travel(is_left, is_down, spin, screen) diff --git a/demos/hangman/main.py b/demos/hangman/main.py index 62712b6..506e875 100644 --- a/demos/hangman/main.py +++ b/demos/hangman/main.py @@ -3,6 +3,7 @@ from demos.hangman.guess import Guess from demos.hangman.trace import Trace from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds class Hangman: @@ -53,6 +54,8 @@ def run(self): # Create generator here while True: + self.output_queue.put("SOUND " + sss_sounds.BEEP_01) + trace.draw_init() trace.draw_choice(guess.letter_select(choice), True) word = guess.pick_word(seed_num) @@ -87,12 +90,16 @@ def run(self): for i in range(len(word)): trace.draw_letter(i, word[i], True) + self.output_queue.put("SOUND " + sss_sounds.END_FAIL_7) + # Check to see if the player has guessed all the letters in the word and the game is over if num_correct == 5: self.gameover = True self.win = True trace.draw_endgame(True) + self.output_queue.put("SOUND " + sss_sounds.BEEP_06_GOOD) + # If the player presses the LEFT key then the game will scroll through the alphabet backwards if repeat_left: trace.draw_choice(guess.letter_select(choice), False) @@ -103,6 +110,8 @@ def run(self): choice = choice - 1 trace.draw_choice(guess.letter_select(choice), True) + self.output_queue.put("SOUND " + sss_sounds.TICK) + # If the player pressed the RIGHT key then the game will scroll through the alphabet forwards if repeat_right: trace.draw_choice(guess.letter_select(choice), False) @@ -113,6 +122,8 @@ def run(self): choice = choice + 1 trace.draw_choice(guess.letter_select(choice), True) + self.output_queue.put("SOUND " + sss_sounds.TICK) + # If the player pressed the START key then the game will check to see if that letter is in the word # If the letter is in the word then the num_correct will increment # If the letter is not in the word then the num_errors will increment @@ -129,6 +140,10 @@ def run(self): correct = True num_correct += 1 guess.add_guess_list(guess.letter_select(choice)) + + if num_correct < 5: + self.output_queue.put("SOUND " + sss_sounds.BEEP_10) + if correct == False and guessed == False: num_errors = num_errors + 1 trace.draw_person(num_errors, True) @@ -140,6 +155,9 @@ def run(self): True, True, ) + + if num_errors < 7: + self.output_queue.put("SOUND " + sss_sounds.BEEP_08) yield # This will wait until the player has pressed the START button again before restarting a new game diff --git a/demos/run/main.py b/demos/run/main.py new file mode 100644 index 0000000..a7b6bd4 --- /dev/null +++ b/demos/run/main.py @@ -0,0 +1,276 @@ +import random +import time + +from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds + + +class Run: + """This game consists of running and jumping to avoid objects that will be shot at you. They will not vary in size but they will vary in speed and timing""" + + # User input is passed through input_queue + # Game output is passed through output_queue + # Screen updates are done through the screen object + def __init__(self, input_queue, output_queue, screen): + # Provide the framerate in frames/seconds and the amount of time of the demo in seconds + self.frame_rate = 10 + self.demo_time = None # None for a game + + self.input_queue = input_queue + self.output_queue = output_queue + self.screen = screen + # init demo/game specific variables here + self.score = 0 # starts out with no points + self.lives = 3 # start with 3 lives + + def run(self): + self.is_left = False + self.is_right = False + self.is_up = False + self.is_jump = False + self.is_down = False + self.is_collision = False + self.is_cannonball_move = False + self.is_reset = False + self.game_play = True + + # bools for button logic + # cannonball[0] is the y coordinate of the cannonball cannonball[1] x coordinate + self.cannonball = [25, 43] + # dude[0] body y coordinate, dude[1] heady y coordinate, dude[2] x coordinate + self.dude = [25, 24, 25] + # This block of code is design set up + # self.init_screen() + # Draw the character + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + + # Draw the ground + for x_line in range(26, 30): + self.screen.draw_hline(0, x_line, 47, push=True) + yield + + # Draws the cannon + self.screen.draw_pixel(46, 26, 0xF, push=True) + self.screen.draw_pixel(46, 25, 0xF, push=True) + self.screen.draw_pixel(45, 25, 0xF, push=True) + # Create generator here + while True: + self.is_cannonball_move = True + if self.game_play: + # This block moves the character + for keypress in get_all_from_queue(self.input_queue): + if keypress == "LEFT_P": + self.is_left = True + self.output_queue.put("SOUND " + sss_sounds.BEEP_04) + elif keypress == "LEFT_R": + self.is_left = False + elif keypress == "RIGHT_P": + self.is_right = True + self.output_queue.put("SOUND " + sss_sounds.BEEP_04) + elif keypress == "RIGHT_R": + self.is_right = False + elif keypress == "UP_P": + self.output_queue.put("SOUND " + sss_sounds.JUMP_03) + # print("Got UP signal") + self.is_jump = True + self.is_up = True + elif keypress == "START_P": + self.is_reset = True + + self.move() + self.collision() + + # # Set up for cannonballs + # def gen_random_speed(self): + # speed = random.randrange(0, 75, 10) + # return speed + + # def gen_rand_time(self): + # time = random.randint(2, 10) + # return time + + # set up movement in the loop + + # set up the cannonballs + if self.is_cannonball_move == True: + if self.cannonball[1] == 0: + self.screen.draw_pixel(self.cannonball[1], 25, 0x0, push=True) + # self.screen.draw_pixel(cannonball[1], 24, 0x0, push=True) + self.score += 100 + + self.cannonball[1] = 43 + # self.cannonball[0] = random.randint(1, 2) + else: + # if self.cannonball[0] == 1: + self.screen.draw_pixel(self.cannonball[1], 25, 0x0, push=True) + self.screen.draw_pixel( + self.cannonball[1] - 1, 25, 0xF, push=True + ) + self.cannonball[1] -= 1 + else: + self.screen.draw_pixel(self.cannonball[1], 25, 0x0, push=True) + if self.is_collision == True: + self.is_cannonball_move = False + self.screen.clear() + self.screen.draw_text( + (self.screen.x_width // 2) - 5, + 26, + "SCORE " + str(self.score), + combine=False, + push=True, + ) + self.screen.draw_text( + (self.screen.x_width // 2) - 5, 24, "GAME OVER", push=True + ) + self.screen.draw_text( + (self.screen.x_width // 2) - 10, + 28, + "PRESS ENTER TO START", + push=True, + ) + + self.game_play = False + # print("game_play", self.game_play) + + for reset in get_all_from_queue(self.input_queue): + if reset == "START_P": + self.is_reset = True + + # print("reset?", self.is_reset) + if self.is_reset: + self.screen.draw_text( + (self.screen.x_width // 2) - 5, 24, " ", push=True + ) + self.screen.draw_text( + (self.screen.x_width // 2) - 5, 26, " ", push=True + ) + self.screen.draw_text( + (self.screen.x_width // 2) - 10, + 28, + " ", + push=True, + ) + + self.score = 0 + # print("Went into reset") + + # Draw the character + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + + # Draw the ground + for x_line in range(26, 30): + self.screen.draw_hline(0, x_line, 47, push=True) + yield + + # Draws the cannon + self.screen.draw_pixel(46, 26, 0xF, push=True) + self.screen.draw_pixel(46, 25, 0xF, push=True) + self.screen.draw_pixel(45, 25, 0xF, push=True) + # Move cannonball back to the beginning + self.cannonball[1] = 43 + # reset the flags + self.is_reset = False + self.game_play = True + self.is_collision = False + + # else: + # self.is_collision = True + yield + + # def end_round(self): + + def collision(self): + if self.cannonball[0] == self.dude[0] and self.cannonball[1] == self.dude[2]: + self.output_queue.put("SOUND " + sss_sounds.EXPLOSION_02) + self.is_collision = True + self.is_cannonball_move = False + else: + self.is_collision = False + + def init_screen(self): + # Draw the character + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + + # Draw the ground + for x_line in range(26, 30): + self.screen.draw_hline(0, x_line, 47, push=True) + yield + + # Draws the cannon + self.screen.draw_pixel(46, 26, 0xF, push=True) + self.screen.draw_pixel(46, 25, 0xF, push=True) + self.screen.draw_pixel(45, 25, 0xF, push=True) + + def move(self): + # print(is_jump) + if self.is_left: + if self.dude[2] <= 40 and self.dude[2] > 2: + self.screen.draw_pixel(self.dude[2], self.dude[1], 0x0, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0x0, push=True) + self.screen.draw_pixel(self.dude[2] - 1, self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2] - 1, self.dude[0], 0xF, push=True) + self.dude[2] -= 1 + self.is_left = False + else: + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + self.is_left = False + if self.is_right: + if self.dude[2] < 40 and self.dude[2] >= 2: + self.screen.draw_pixel(self.dude[2], self.dude[1], 0x0, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0x0, push=True) + self.screen.draw_pixel(self.dude[2] + 1, self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2] + 1, self.dude[0], 0xF, push=True) + self.dude[2] += 1 + self.is_right = False + else: + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + self.is_right = False + if self.is_jump: + # print("is up ", is_up) + if self.is_up: + # print(self.dude[1]) + if self.dude[1] <= 21: + # print("Before setting: " + str(self.is_up)) + self.is_up = False + self.is_down = True + # print("IF STATEMENT RAN") + # print("Down:", self.is_down) + # print("Up:", self.is_up) + else: + self.dude[0] -= 1 + self.dude[1] -= 1 + self.screen.draw_pixel( + self.dude[2], self.dude[0] + 1, 0x0, push=True + ) + self.screen.draw_pixel( + self.dude[2], self.dude[1] + 1, 0x0, push=True + ) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + elif self.is_down: + # print("IS DOWN RAN") + if self.dude[0] >= 25: + self.is_down = False + else: + self.dude[0] += 1 + self.dude[1] += 1 + # print(self.dude[0]) + self.screen.draw_pixel( + self.dude[2], self.dude[0] - 1, 0x0, push=True + ) + self.screen.draw_pixel( + self.dude[2], self.dude[1] - 1, 0x0, push=True + ) + self.screen.draw_pixel(self.dude[2], self.dude[0], 0xF, push=True) + self.screen.draw_pixel(self.dude[2], self.dude[1], 0xF, push=True) + else: + self.is_jump = False + + def stop(self): + # Reset the state of the demo if needed, else leave blank + pass diff --git a/demos/snake/main.py b/demos/snake/main.py index 9252573..623bd47 100644 --- a/demos/snake/main.py +++ b/demos/snake/main.py @@ -4,6 +4,7 @@ from loguru import logger from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds # import os, sys @@ -118,6 +119,12 @@ def get_new_food_location(): direction = 1 elif command == "DOWN_P": direction = 3 + + if (direction + prev_direction) % 4 == 1 or ( + direction + prev_direction + ) % 4 == 3: + self.output_queue.put("SOUND " + sss_sounds.BEEP_04) + # Check if the command needs to be restored if (direction == 2 and prev_direction == 0) or ( direction == 0 and prev_direction == 2 @@ -160,6 +167,8 @@ def get_new_food_location(): # update score on screen self.screen.draw_text(6, 0, str(self.snek_length - 3).zfill(3)) + self.output_queue.put("SOUND " + sss_sounds.BEEP_12) + snek_list.append(current_location) # if snake is bigger than it is supposed to pop the end of the snake off @@ -201,6 +210,8 @@ def get_new_food_location(): self.screen.x_width // 2 - 4, self.screen.y_height // 2 - 2, "GAME OVER" ) + self.output_queue.put("SOUND " + sss_sounds.END_FAIL_8) + # update the highscore if highscore was acheived if self.snek_length > self.h_score: self.screen.draw_text( diff --git a/demos/tetris/main.py b/demos/tetris/main.py index dc87fc9..fc5f155 100644 --- a/demos/tetris/main.py +++ b/demos/tetris/main.py @@ -3,6 +3,7 @@ from os.path import exists from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds class Tetris: @@ -61,6 +62,8 @@ def run(self): next_shape = random.choice(list(self.Shape)) + self.output_queue.put("BACKGROUND SOUND " + sss_sounds.TETRIS) + while not self.is_game_over(): if self.level == 2: self.drop_rate = 10 @@ -165,6 +168,8 @@ def run(self): self.draw_shape(shape_location) prev_shape_location = shape_location.copy() + self.output_queue.put("SOUND " + sss_sounds.BEEP_15) + is_falling = self.is_falling(shape_location) if ( @@ -195,12 +200,15 @@ def run(self): #### FILL IN EMPTY ROWS self.fill_empty_rows() self.screen.push() + self.output_queue.put("SOUND " + sss_sounds.COLLECT_POINT_01) yield self.draw_shape(next_shape_location, erase=True) self.screen.push() yield + self.output_queue.put("STOP SOUND") + self.draw_game_over_screen() self.screen.push() diff --git a/demos/two_circle/main.py b/demos/two_circle/main.py new file mode 100644 index 0000000..b4efaea --- /dev/null +++ b/demos/two_circle/main.py @@ -0,0 +1,91 @@ +class TwoCircle: + """This is a demo that just runs a circle around the perimeter""" + + demo_time = None + + # User input is passed through input_queue + # Game output is passed through output_queue + # Screen updates are done through the screen object + def __init__(self, input_queue, output_queue, screen): + # Provide the framerate in frames/seconds and the amount of time of the demo in seconds + self.frame_rate = 10 + + self.input_queue = input_queue + self.output_queue = output_queue + self.screen = screen + # init demo/game specific variables here + + def run(self): + # Create generator here + width = self.screen.x_width + height = self.screen.y_height + # Size is 48x48 + print(width, height) + while True: + for x in range(0, width): + if x < 2: + self.screen.draw_pixel(x, 0, 0xF, push=True) + + else: + # Changed x - 1 to x - 2 to add another dot + self.screen.draw_pixel(x - 2, 0, 0x0, push=True) + self.screen.draw_pixel(x, 0, 0xF, push=True) + # Putting another pixel next to original + # self.screen.draw_pixel(x - 2, 0, 0x0, push=True) + # self.screen.draw_pixel(x - 1, 0, 0xF, push=True) + yield + + self.screen.draw_pixel(46, 0, 0x0, push=True) + self.screen.draw_pixel(47, 0, 0x0, push=True) + + for y in range(1, height): + if y <= 2: + self.screen.draw_pixel(width - 1, y, 0xF, push=True) + + else: + # Switched to y - 2 + self.screen.draw_pixel(width - 1, y - 2, 0x0, push=True) + self.screen.draw_pixel(width - 1, y, 0xF, push=True) + # Putting another pixel next to original + # self.screen.draw_pixel(width - 1, y, 0x0, push=True) + # self.screen.draw_pixel(width - 1, y + 1, 0xF, push=True) + yield + + self.screen.draw_pixel(width - 1, 46, 0x0, push=True) + for x in range(width - 1, 0, -1): + if x >= width - 2: # is 46 + self.screen.draw_pixel(x, height - 1, 0xF, push=True) + + # elif x >= 3 and x <= 45: + # Switched to x - 2 + else: + self.screen.draw_pixel(x + 2, height - 1, 0x0, push=True) + self.screen.draw_pixel(x, height - 1, 0xF, push=True) + + # else: + # self.screen.draw_pixel(x + 1, height - 1, 0x0, push=True) + # self.screen.draw_pixel(x, height - 1, 0xF, push=True) + # Putting another pixel + # self.screen.draw_pixel(x - 2, height - 1, 0xF, combine=False, push=True) + # self.screen.draw_pixel(x - 1, height - 1, 0x0, combine=False, push=True) + # print(x) + yield + + self.screen.draw_pixel(2, height - 1, 0x0, push=True) + self.screen.draw_pixel(1, height - 1, 0x0, push=True) + for y in range(height - 1, 0, -1): + if y >= height - 2: + self.screen.draw_pixel(0, y, 0xF, push=True) + else: + # Switched to y - 2 + self.screen.draw_pixel(0, y + 2, 0x0, push=True) + self.screen.draw_pixel(0, y, 0xF, push=True) + + # print(y) + yield + self.screen.draw_pixel(0, 2, 0x0, push=True) + self.screen.draw_pixel(0, 1, 0x0, push=True) + + def stop(self): + # Reset the state of the demo if needed, else leave blank + pass diff --git a/demos/under_construction/main.py b/demos/under_construction/main.py index 86353b7..146d9ae 100644 --- a/demos/under_construction/main.py +++ b/demos/under_construction/main.py @@ -1,3 +1,5 @@ +from sss_sounds import sss_sounds + PIXEL_FULL = 0xF PIXEL_BOTTOM = 0x1 PIXEL_LEFT = 0x2 @@ -29,6 +31,8 @@ def run(self): line = self.screen.draw_shape_line dot = self.screen.draw_pixel + self.output_queue.put("SOUND " + sss_sounds.EXPLOSION_04) + while True: line(5, ymax // 2 - 10, 6, ymax // 2 - 10, PIXEL_TOP) line(5, ymax // 2 - 12, 6, ymax // 2 - 12, PIXEL_TOP) diff --git a/demos/video/main.py b/demos/video/main.py index 9e52c1e..40c388b 100644 --- a/demos/video/main.py +++ b/demos/video/main.py @@ -87,6 +87,17 @@ def run(self): loaded_video = np.load(self.path + self.target) loaded_video = loaded_video["arr_0"] + # Let Sully Groan if it is the right video + if self.target == "sully.npz": + self.output_queue.put( + "BACKGROUND SOUND " + "sss_sounds/Sully_Groan.mp3" + ) + pass + + if self.target == "nyan.npz": + self.output_queue.put("BACKGROUND SOUND " + "sss_sounds/Nyan_Cat.mp3") + pass + # Iterate through the frames for frame in loaded_video: self.next_frame = False @@ -107,6 +118,7 @@ def run(self): # Skip to the next video if self.new_video: + self.output_queue.put("STOP SOUND") break # Draw frame to screen @@ -119,6 +131,7 @@ def run(self): def stop(self): # Reset the state of the demo if needed, else leave blank self.screen.clear() + self.output_queue.put("STOP SOUND") pass def get_input_buff(self): diff --git a/demos/welcome_y/main.py b/demos/welcome_y/main.py index 9c83a71..5a4265b 100644 --- a/demos/welcome_y/main.py +++ b/demos/welcome_y/main.py @@ -1,5 +1,8 @@ import random +from demos.utils import get_all_from_queue +from sss_sounds import sss_sounds + SIZE_MULTIPLIER = 1 # try 2 for better proportionality?? RIGHT_X_OFFSET = ( @@ -47,15 +50,46 @@ def run(self): # Hide the old Y self.draw_the_y(location[0], location[1], False) + on_corner = ( + (location[0] == 0 and location[1] == 0) + or ( + location[0] == 0 + and location[1] == self.screen.y_height - BOTTOM_Y_OFFSET - 1 + ) + or ( + location[0] == self.screen.x_width - RIGHT_X_OFFSET - 1 + and location[1] == 0 + ) + or ( + location[0] == self.screen.x_width - RIGHT_X_OFFSET - 1 + and location[1] == self.screen.y_height - BOTTOM_Y_OFFSET - 1 + ) + ) + + if on_corner: + self.output_queue.put("SOUND " + sss_sounds.JINGLE_ACHIEVEMENT_01) + if location[0] == 0: isLeft = False + + if not on_corner: + self.output_queue.put("SOUND " + sss_sounds.CLICK_EFFECT) if location[0] == self.screen.x_width - RIGHT_X_OFFSET - 1: isLeft = True + + if not on_corner: + self.output_queue.put("SOUND " + sss_sounds.CLICK_EFFECT) if location[1] == 0: isDown = True + + if not on_corner: + self.output_queue.put("SOUND " + sss_sounds.CLICK_EFFECT) if location[1] == self.screen.y_height - BOTTOM_Y_OFFSET - 1: isDown = False + if not on_corner: + self.output_queue.put("SOUND " + sss_sounds.CLICK_EFFECT) + if not isLeft: location[0] += 1 else: diff --git a/sss_sounds/Climb_Rope_Loop_00.wav b/sss_sounds/Climb_Rope_Loop_00.wav new file mode 100644 index 0000000..f8788d4 Binary files /dev/null and b/sss_sounds/Climb_Rope_Loop_00.wav differ diff --git a/sss_sounds/Collect_Point_00.wav b/sss_sounds/Collect_Point_00.wav new file mode 100644 index 0000000..6665a50 Binary files /dev/null and b/sss_sounds/Collect_Point_00.wav differ diff --git a/sss_sounds/Collect_Point_01.wav b/sss_sounds/Collect_Point_01.wav new file mode 100644 index 0000000..55206a3 Binary files /dev/null and b/sss_sounds/Collect_Point_01.wav differ diff --git a/sss_sounds/Collect_Point_02.wav b/sss_sounds/Collect_Point_02.wav new file mode 100644 index 0000000..9f44626 Binary files /dev/null and b/sss_sounds/Collect_Point_02.wav differ diff --git a/sss_sounds/Craft_00.wav b/sss_sounds/Craft_00.wav new file mode 100644 index 0000000..053e031 Binary files /dev/null and b/sss_sounds/Craft_00.wav differ diff --git a/sss_sounds/Explosion_00.wav b/sss_sounds/Explosion_00.wav new file mode 100644 index 0000000..ce70f04 Binary files /dev/null and b/sss_sounds/Explosion_00.wav differ diff --git a/sss_sounds/Explosion_01.wav b/sss_sounds/Explosion_01.wav new file mode 100644 index 0000000..25c94ff Binary files /dev/null and b/sss_sounds/Explosion_01.wav differ diff --git a/sss_sounds/Explosion_02.wav b/sss_sounds/Explosion_02.wav new file mode 100644 index 0000000..b5156d9 Binary files /dev/null and b/sss_sounds/Explosion_02.wav differ diff --git a/sss_sounds/Explosion_03.wav b/sss_sounds/Explosion_03.wav new file mode 100644 index 0000000..c8929c0 Binary files /dev/null and b/sss_sounds/Explosion_03.wav differ diff --git a/sss_sounds/Explosion_04.wav b/sss_sounds/Explosion_04.wav new file mode 100644 index 0000000..fd39145 Binary files /dev/null and b/sss_sounds/Explosion_04.wav differ diff --git a/sss_sounds/Hero_Death_00.wav b/sss_sounds/Hero_Death_00.wav new file mode 100644 index 0000000..3ef90e0 Binary files /dev/null and b/sss_sounds/Hero_Death_00.wav differ diff --git a/sss_sounds/Hit_00.wav b/sss_sounds/Hit_00.wav new file mode 100644 index 0000000..8523333 Binary files /dev/null and b/sss_sounds/Hit_00.wav differ diff --git a/sss_sounds/Hit_01.wav b/sss_sounds/Hit_01.wav new file mode 100644 index 0000000..b5058d8 Binary files /dev/null and b/sss_sounds/Hit_01.wav differ diff --git a/sss_sounds/Hit_02.wav b/sss_sounds/Hit_02.wav new file mode 100644 index 0000000..caae3dd Binary files /dev/null and b/sss_sounds/Hit_02.wav differ diff --git a/sss_sounds/Hit_03.wav b/sss_sounds/Hit_03.wav new file mode 100644 index 0000000..230a6eb Binary files /dev/null and b/sss_sounds/Hit_03.wav differ diff --git a/sss_sounds/Jingle_Achievement_00.wav b/sss_sounds/Jingle_Achievement_00.wav new file mode 100644 index 0000000..fd403a4 Binary files /dev/null and b/sss_sounds/Jingle_Achievement_00.wav differ diff --git a/sss_sounds/Jingle_Achievement_01.wav b/sss_sounds/Jingle_Achievement_01.wav new file mode 100644 index 0000000..1d2286e Binary files /dev/null and b/sss_sounds/Jingle_Achievement_01.wav differ diff --git a/sss_sounds/Jingle_Lose_00.wav b/sss_sounds/Jingle_Lose_00.wav new file mode 100644 index 0000000..1e1a783 Binary files /dev/null and b/sss_sounds/Jingle_Lose_00.wav differ diff --git a/sss_sounds/Jingle_Lose_01.wav b/sss_sounds/Jingle_Lose_01.wav new file mode 100644 index 0000000..710906b Binary files /dev/null and b/sss_sounds/Jingle_Lose_01.wav differ diff --git a/sss_sounds/Jingle_Win_00.wav b/sss_sounds/Jingle_Win_00.wav new file mode 100644 index 0000000..b47fadc Binary files /dev/null and b/sss_sounds/Jingle_Win_00.wav differ diff --git a/sss_sounds/Jingle_Win_01.wav b/sss_sounds/Jingle_Win_01.wav new file mode 100644 index 0000000..4ded27c Binary files /dev/null and b/sss_sounds/Jingle_Win_01.wav differ diff --git a/sss_sounds/Jump_00.wav b/sss_sounds/Jump_00.wav new file mode 100644 index 0000000..5badfa2 Binary files /dev/null and b/sss_sounds/Jump_00.wav differ diff --git a/sss_sounds/Jump_01.wav b/sss_sounds/Jump_01.wav new file mode 100644 index 0000000..b85725a Binary files /dev/null and b/sss_sounds/Jump_01.wav differ diff --git a/sss_sounds/Jump_02.wav b/sss_sounds/Jump_02.wav new file mode 100644 index 0000000..fb18bd5 Binary files /dev/null and b/sss_sounds/Jump_02.wav differ diff --git a/sss_sounds/Jump_03.wav b/sss_sounds/Jump_03.wav new file mode 100644 index 0000000..c8b933b Binary files /dev/null and b/sss_sounds/Jump_03.wav differ diff --git a/sss_sounds/Menu_Navigate_00.wav b/sss_sounds/Menu_Navigate_00.wav new file mode 100644 index 0000000..d36ee07 Binary files /dev/null and b/sss_sounds/Menu_Navigate_00.wav differ diff --git a/sss_sounds/Menu_Navigate_01.wav b/sss_sounds/Menu_Navigate_01.wav new file mode 100644 index 0000000..d05a235 Binary files /dev/null and b/sss_sounds/Menu_Navigate_01.wav differ diff --git a/sss_sounds/Menu_Navigate_02.wav b/sss_sounds/Menu_Navigate_02.wav new file mode 100644 index 0000000..c043843 Binary files /dev/null and b/sss_sounds/Menu_Navigate_02.wav differ diff --git a/sss_sounds/Menu_Navigate_03.wav b/sss_sounds/Menu_Navigate_03.wav new file mode 100644 index 0000000..0b3d4aa Binary files /dev/null and b/sss_sounds/Menu_Navigate_03.wav differ diff --git a/sss_sounds/Nyan_Cat.mp3 b/sss_sounds/Nyan_Cat.mp3 new file mode 100644 index 0000000..96f0a5b Binary files /dev/null and b/sss_sounds/Nyan_Cat.mp3 differ diff --git a/sss_sounds/Open_00.wav b/sss_sounds/Open_00.wav new file mode 100644 index 0000000..7c9b2de Binary files /dev/null and b/sss_sounds/Open_00.wav differ diff --git a/sss_sounds/Open_01.wav b/sss_sounds/Open_01.wav new file mode 100644 index 0000000..f042b89 Binary files /dev/null and b/sss_sounds/Open_01.wav differ diff --git a/sss_sounds/Pickup_00.wav b/sss_sounds/Pickup_00.wav new file mode 100644 index 0000000..52f90c9 Binary files /dev/null and b/sss_sounds/Pickup_00.wav differ diff --git a/sss_sounds/Pickup_01.wav b/sss_sounds/Pickup_01.wav new file mode 100644 index 0000000..d73a67b Binary files /dev/null and b/sss_sounds/Pickup_01.wav differ diff --git a/sss_sounds/Pickup_02.wav b/sss_sounds/Pickup_02.wav new file mode 100644 index 0000000..72a0b40 Binary files /dev/null and b/sss_sounds/Pickup_02.wav differ diff --git a/sss_sounds/Pickup_03.wav b/sss_sounds/Pickup_03.wav new file mode 100644 index 0000000..75764f1 Binary files /dev/null and b/sss_sounds/Pickup_03.wav differ diff --git a/sss_sounds/Pickup_04.wav b/sss_sounds/Pickup_04.wav new file mode 100644 index 0000000..05a8b5e Binary files /dev/null and b/sss_sounds/Pickup_04.wav differ diff --git a/sss_sounds/Shoot_00.wav b/sss_sounds/Shoot_00.wav new file mode 100644 index 0000000..a983110 Binary files /dev/null and b/sss_sounds/Shoot_00.wav differ diff --git a/sss_sounds/Shoot_01.wav b/sss_sounds/Shoot_01.wav new file mode 100644 index 0000000..360a738 Binary files /dev/null and b/sss_sounds/Shoot_01.wav differ diff --git a/sss_sounds/Shoot_02.wav b/sss_sounds/Shoot_02.wav new file mode 100644 index 0000000..62ddbd8 Binary files /dev/null and b/sss_sounds/Shoot_02.wav differ diff --git a/sss_sounds/Shoot_03.wav b/sss_sounds/Shoot_03.wav new file mode 100644 index 0000000..79674d1 Binary files /dev/null and b/sss_sounds/Shoot_03.wav differ diff --git a/sss_sounds/Sully_Groan.mp3 b/sss_sounds/Sully_Groan.mp3 new file mode 100644 index 0000000..f0c9878 Binary files /dev/null and b/sss_sounds/Sully_Groan.mp3 differ diff --git a/sss_sounds/Tetris.mp3 b/sss_sounds/Tetris.mp3 new file mode 100644 index 0000000..8a3f4a7 Binary files /dev/null and b/sss_sounds/Tetris.mp3 differ diff --git a/sss_sounds/beep-1.mp3 b/sss_sounds/beep-1.mp3 new file mode 100644 index 0000000..bb7a191 Binary files /dev/null and b/sss_sounds/beep-1.mp3 differ diff --git a/sss_sounds/beep-10.mp3 b/sss_sounds/beep-10.mp3 new file mode 100644 index 0000000..dba530b Binary files /dev/null and b/sss_sounds/beep-10.mp3 differ diff --git a/sss_sounds/beep-11.mp3 b/sss_sounds/beep-11.mp3 new file mode 100644 index 0000000..f4c7382 Binary files /dev/null and b/sss_sounds/beep-11.mp3 differ diff --git a/sss_sounds/beep-12.mp3 b/sss_sounds/beep-12.mp3 new file mode 100644 index 0000000..ca141bc Binary files /dev/null and b/sss_sounds/beep-12.mp3 differ diff --git a/sss_sounds/beep-13.mp3 b/sss_sounds/beep-13.mp3 new file mode 100644 index 0000000..90c086b Binary files /dev/null and b/sss_sounds/beep-13.mp3 differ diff --git a/sss_sounds/beep-14.mp3 b/sss_sounds/beep-14.mp3 new file mode 100644 index 0000000..b506b07 Binary files /dev/null and b/sss_sounds/beep-14.mp3 differ diff --git a/sss_sounds/beep-15.mp3 b/sss_sounds/beep-15.mp3 new file mode 100644 index 0000000..1bf35e5 Binary files /dev/null and b/sss_sounds/beep-15.mp3 differ diff --git a/sss_sounds/beep-16.mp3 b/sss_sounds/beep-16.mp3 new file mode 100644 index 0000000..f0e1e04 Binary files /dev/null and b/sss_sounds/beep-16.mp3 differ diff --git a/sss_sounds/beep-4.mp3 b/sss_sounds/beep-4.mp3 new file mode 100644 index 0000000..26eedad Binary files /dev/null and b/sss_sounds/beep-4.mp3 differ diff --git a/sss_sounds/beep-6-good.mp3 b/sss_sounds/beep-6-good.mp3 new file mode 100644 index 0000000..b429f72 Binary files /dev/null and b/sss_sounds/beep-6-good.mp3 differ diff --git a/sss_sounds/beep-7-good.mp3 b/sss_sounds/beep-7-good.mp3 new file mode 100644 index 0000000..9940318 Binary files /dev/null and b/sss_sounds/beep-7-good.mp3 differ diff --git a/sss_sounds/beep-8.mp3 b/sss_sounds/beep-8.mp3 new file mode 100644 index 0000000..f8a0b3e Binary files /dev/null and b/sss_sounds/beep-8.mp3 differ diff --git a/sss_sounds/beep-9.mp3 b/sss_sounds/beep-9.mp3 new file mode 100644 index 0000000..5c82f39 Binary files /dev/null and b/sss_sounds/beep-9.mp3 differ diff --git a/sss_sounds/bensound-evolution.mp3 b/sss_sounds/bensound-evolution.mp3 new file mode 100644 index 0000000..015690d Binary files /dev/null and b/sss_sounds/bensound-evolution.mp3 differ diff --git a/sss_sounds/bensound-memories.mp3 b/sss_sounds/bensound-memories.mp3 new file mode 100644 index 0000000..0c780f8 Binary files /dev/null and b/sss_sounds/bensound-memories.mp3 differ diff --git a/sss_sounds/bensound-pianomoment.mp3 b/sss_sounds/bensound-pianomoment.mp3 new file mode 100644 index 0000000..c2d4619 Binary files /dev/null and b/sss_sounds/bensound-pianomoment.mp3 differ diff --git a/sss_sounds/blip.wav b/sss_sounds/blip.wav new file mode 100644 index 0000000..a35a179 Binary files /dev/null and b/sss_sounds/blip.wav differ diff --git a/sss_sounds/blurp_x.wav b/sss_sounds/blurp_x.wav new file mode 100644 index 0000000..3a19e01 Binary files /dev/null and b/sss_sounds/blurp_x.wav differ diff --git a/sss_sounds/click-button-menu.mp3 b/sss_sounds/click-button-menu.mp3 new file mode 100644 index 0000000..39ce71a Binary files /dev/null and b/sss_sounds/click-button-menu.mp3 differ diff --git a/sss_sounds/click-game-menu.mp3 b/sss_sounds/click-game-menu.mp3 new file mode 100644 index 0000000..4a18e29 Binary files /dev/null and b/sss_sounds/click-game-menu.mp3 differ diff --git a/sss_sounds/click-menu-app.mp3 b/sss_sounds/click-menu-app.mp3 new file mode 100644 index 0000000..4f8c2d7 Binary files /dev/null and b/sss_sounds/click-menu-app.mp3 differ diff --git a/sss_sounds/click.mp3 b/sss_sounds/click.mp3 new file mode 100644 index 0000000..f4c7382 Binary files /dev/null and b/sss_sounds/click.mp3 differ diff --git a/sss_sounds/click_effect.mp3 b/sss_sounds/click_effect.mp3 new file mode 100644 index 0000000..2bffa12 Binary files /dev/null and b/sss_sounds/click_effect.mp3 differ diff --git a/sss_sounds/collected-item.mp3 b/sss_sounds/collected-item.mp3 new file mode 100644 index 0000000..92c0da1 Binary files /dev/null and b/sss_sounds/collected-item.mp3 differ diff --git a/sss_sounds/end-fail-10-goodbye.mp3 b/sss_sounds/end-fail-10-goodbye.mp3 new file mode 100644 index 0000000..d05db7f Binary files /dev/null and b/sss_sounds/end-fail-10-goodbye.mp3 differ diff --git a/sss_sounds/end-fail-5.mp3 b/sss_sounds/end-fail-5.mp3 new file mode 100644 index 0000000..989e363 Binary files /dev/null and b/sss_sounds/end-fail-5.mp3 differ diff --git a/sss_sounds/end-fail-6.mp3 b/sss_sounds/end-fail-6.mp3 new file mode 100644 index 0000000..301acc5 Binary files /dev/null and b/sss_sounds/end-fail-6.mp3 differ diff --git a/sss_sounds/end-fail-7.mp3 b/sss_sounds/end-fail-7.mp3 new file mode 100644 index 0000000..164e96e Binary files /dev/null and b/sss_sounds/end-fail-7.mp3 differ diff --git a/sss_sounds/end-fail-8.mp3 b/sss_sounds/end-fail-8.mp3 new file mode 100644 index 0000000..58f0134 Binary files /dev/null and b/sss_sounds/end-fail-8.mp3 differ diff --git a/sss_sounds/end-win-5.mp3 b/sss_sounds/end-win-5.mp3 new file mode 100644 index 0000000..3f0ace4 Binary files /dev/null and b/sss_sounds/end-win-5.mp3 differ diff --git a/sss_sounds/intro-drive-ident.mp3 b/sss_sounds/intro-drive-ident.mp3 new file mode 100644 index 0000000..c02907d Binary files /dev/null and b/sss_sounds/intro-drive-ident.mp3 differ diff --git a/sss_sounds/level-up.mp3 b/sss_sounds/level-up.mp3 new file mode 100644 index 0000000..f4251af Binary files /dev/null and b/sss_sounds/level-up.mp3 differ diff --git a/sss_sounds/mech-keyboard-02.mp3 b/sss_sounds/mech-keyboard-02.mp3 new file mode 100644 index 0000000..a6ea26d Binary files /dev/null and b/sss_sounds/mech-keyboard-02.mp3 differ diff --git a/sss_sounds/simple-notification.mp3 b/sss_sounds/simple-notification.mp3 new file mode 100644 index 0000000..1182e17 Binary files /dev/null and b/sss_sounds/simple-notification.mp3 differ diff --git a/sss_sounds/sinister-laugh.mp3 b/sss_sounds/sinister-laugh.mp3 new file mode 100644 index 0000000..aa852b4 Binary files /dev/null and b/sss_sounds/sinister-laugh.mp3 differ diff --git a/sss_sounds/sss_sounds.py b/sss_sounds/sss_sounds.py new file mode 100644 index 0000000..aa17830 --- /dev/null +++ b/sss_sounds/sss_sounds.py @@ -0,0 +1,75 @@ +BEEP_01 = "sss_sounds/beep-1.mp3" +BEEP_04 = "sss_sounds/beep-4.mp3" +BEEP_06_GOOD = "sss_sounds/beep-6-good.mp3" +BEEP_08 = "sss_sounds/beep-8.mp3" +BEEP_10 = "sss_sounds/beep-10.mp3" +BEEP_11 = "sss_sounds/beep-11.mp3" +BEEP_12 = "sss_sounds/beep-12.mp3" +BEEP_13 = "sss_sounds/beep-13.mp3" +BEEP_14 = "sss_sounds/beep-14.mp3" +BEEP_15 = "sss_sounds/beep-15.mp3" +BEEP_16 = "sss_sounds/beep-16.mp3" +END_FAIL_10_GOODBYE = "sss_sounds/end-fail-10-goodbye.mp3" +END_FAIL_5 = "sss_sounds/end-fail-5.mp3" +END_FAIL_6 = "sss_sounds/end-fail-6.mp3" +END_FAIL_7 = "sss_sounds/end-fail-7.mp3" +END_FAIL_8 = "sss_sounds/end-fail-8.mp3" +END_WIN_5 = "sss_sounds/end-win-5.mp3" +LEVEL_UP = "sss_sounds/level-up.mp3" +SINISTER_LAUGH = "sss_sounds/sinister-laugh.mp3" +TETRIS = "sss_sounds/Tetris.mp3" +TICK = "sss_sounds/tick.mp3" +UH_OH = "sss_sounds/uh-oh.mp3" +CLIMB_ROPE_LOOP_00 = "sss_sounds/Climb_Rope_Loop_00.wav" +COLLECT_POINT_00 = "sss_sounds/Collect_Point_00.wav" +COLLECT_POINT_01 = "sss_sounds/Collect_Point_01.wav" +COLLECT_POINT_02 = "sss_sounds/Collect_Point_02.wav" +CRAFT_00 = "sss_sounds/Craft_00.wav" +EXPLOSION_00 = "sss_sounds/Explosion_00.wav" +EXPLOSION_01 = "sss_sounds/Explosion_01.wav" +EXPLOSION_02 = "sss_sounds/Explosion_02.wav" +EXPLOSION_03 = "sss_sounds/Explosion_03.wav" +EXPLOSION_04 = "sss_sounds/Explosion_04.wav" +HERO_DEATH_00 = "sss_sounds/Hero_Death_00.wav" +HIT_00 = "sss_sounds/Hit_00.wav" +HIT_01 = "sss_sounds/Hit_01.wav" +HIT_02 = "sss_sounds/Hit_02.wav" +HIT_03 = "sss_sounds/Hit_03.wav" +JINGLE_ACHIEVEMENT_00 = "sss_sounds/Jingle_Achievement_00.wav" +JINGLE_ACHIEVEMENT_01 = "sss_sounds/Jingle_Achievement_01.wav" +JINGLE_LOSE_00 = "sss_sounds/Jingle_Lose_00.wav" +JINGLE_LOSE_01 = "sss_sounds/Jingle_Lose_01.wav" +JINGLE_WIN_00 = "sss_sounds/Jingle_Win_00.wav" +JINGLE_WIN_01 = "sss_sounds/Jingle_Win_01.wav" +JUMP_00 = "sss_sounds/Jump_00.wav" +JUMP_01 = "sss_sounds/Jump_01.wav" +JUMP_02 = "sss_sounds/Jump_02.wav" +JUMP_03 = "sss_sounds/Jump_03.wav" +MENU_NAVIGATE_00 = "sss_sounds/Menu_Navigate_00.wav" +MENU_NAVIGATE_01 = "sss_sounds/Menu_Navigate_01.wav" +MENU_NAVIGATE_02 = "sss_sounds/Menu_Navigate_02.wav" +MENU_NAVIGATE_03 = "sss_sounds/Menu_Navigate_03.wav" +OPEN_00 = "sss_sounds/Open_00.wav" +OPEN_01 = "sss_sounds/Open_01.wav" +PICKUP_00 = "sss_sounds/Pickup_00.wav" +PICKUP_01 = "sss_sounds/Pickup_01.wav" +PICKUP_02 = "sss_sounds/Pickup_02.wav" +PICKUP_03 = "sss_sounds/Pickup_03.wav" +PICKUP_04 = "sss_sounds/Pickup_04.wav" +SHOOT_00 = "sss_sounds/Shoot_00.wav" +SHOOT_01 = "sss_sounds/Shoot_01.wav" +SHOOT_02 = "sss_sounds/Shoot_02.wav" +SHOOT_03 = "sss_sounds/Shoot_03.wav" +BLIP = "sss_sounds/blip.wav" +BLURP_X = "sss_sounds/blurp_x.wav" +CLICK_BUTTON_MENU = "sss_sounds/click-button-menu.mp3" +CLICK_GAME_MENU = "sss_sounds/click-game-menu.mp3" +CLICK_MENU_APP = "sss_sounds/click-menu-app.mp3" +CLICK = "sss_sounds/click.mp3" +CLICK_EFFECT = "sss_sounds/click_effect.mp3" +COLLECTED_ITEM = "sss_sounds/collected-item.mp3" +INTRO_DRIVE_IDENT = "sss_sounds/intro-drive-ident.mp3" +MECH_KEYBOARD_02 = "sss_sounds/mech-keyboard-02.mp3" +SIMPLE_NOTIFICATION = "sss_sounds/simple-notification.mp3" +TWO_SYMBOLS_MINIMAL_LOGO = "sss_sounds/two-symbols-minimal-logo.mp3" +WRONG = "sss_sounds/wrong.mp3" diff --git a/sss_sounds/test.py b/sss_sounds/test.py new file mode 100644 index 0000000..b71d6fe --- /dev/null +++ b/sss_sounds/test.py @@ -0,0 +1,21 @@ +import os +import pygame +from pygame import mixer + +pygame.init() +mixer.init() + +dir_list = os.listdir("sss_sounds") +dir_list.sort() +for i in dir_list: + if i == "Tetris.mp3": + continue + + if i.endswith(".mp3"): + try: + # sound = mixer.Sound("sss_sounds/" + i) + # sound.play() + mixer.Sound("sss_sounds/" + i).play() + input("Did you hear: " + i + "?") + except: + print("Unable to play sound file: {}".format(i)) diff --git a/sss_sounds/tick.mp3 b/sss_sounds/tick.mp3 new file mode 100644 index 0000000..5a83d97 Binary files /dev/null and b/sss_sounds/tick.mp3 differ diff --git a/sss_sounds/two-symbols-minimal-logo.mp3 b/sss_sounds/two-symbols-minimal-logo.mp3 new file mode 100644 index 0000000..58516f9 Binary files /dev/null and b/sss_sounds/two-symbols-minimal-logo.mp3 differ diff --git a/sss_sounds/uh-oh.mp3 b/sss_sounds/uh-oh.mp3 new file mode 100644 index 0000000..3ddcb64 Binary files /dev/null and b/sss_sounds/uh-oh.mp3 differ diff --git a/sss_sounds/wrong.mp3 b/sss_sounds/wrong.mp3 new file mode 100644 index 0000000..c8fe2a4 Binary files /dev/null and b/sss_sounds/wrong.mp3 differ