def mainLoop(self, level_filename, new_score, percent_played): raw_level_name = level_filename[:len(level_filename)-10] high_score_file = "../data/" + raw_level_name + "-high_scores.txt" high_scores = open(high_score_file, 'r') # scores = [("MSH", "500"), ("MSH", "400"), ("MSH", "300"), # ("MSH", "200"), ("MSH", "100")] scores = [] new_high_score = False for line in high_scores: if line != "": scores.append(tuple(line.split('\t'))) high_scores.close() for name, score in scores: if new_score > int(score): new_high_score = True if new_high_score: m = HighScoreScreen(self.screen) m.mainLoop() new_name = m.name new_scores = [] high_scores = open(high_score_file, 'w') added = False for i in range(0, 4): if not added and new_score > int(scores[i][1]): high_scores.writelines(new_name + "\t" + str(new_score) + "\n") new_scores.append((new_name, str(new_score))) added = True high_scores.writelines(scores[i][0] + "\t" + scores[i][1]) new_scores.append(scores[i]) if new_score < int(scores[3][1]): high_scores.writelines(new_name + "\t" + str(new_score)) new_scores.append((new_name, str(new_score))) added = True high_scores.close() scores = new_scores screen = self.screen """Joystick""" self.joy=pygame.joystick.Joystick(0) self.joy.init() #self.numbutton = self.joy.get_numbuttons() if sys.platform == "darwin": self.buttonMap = {11 : HAL.GREEN, 12 : HAL.RED, 13 : HAL.BLUE, 14 : HAL.YELLOW, 8 : HAL.ORANGE, 5 : HAL.BACK, 4 : HAL.START, 1 : HAL.STRUM_DOWN, 0 : HAL.STRUM_UP} self.axisMap = {4 : HAL.WHAMMY, 1 : HAL.EFFECT, 5 : HAL.TILT, 2 : HAL.NOTHING, 3 : HAL.NOTHING} self.hatMap = {0 : {} } self.axisDefault = {4 : -1.0} self.hatDefault = {} elif sys.platform == "win32": self.buttonMap = {0 : HAL.GREEN, 1 : HAL.RED, 2 : HAL.BLUE, 3 : HAL.YELLOW, 4 : HAL.ORANGE, 6 : HAL.BACK, 7 : HAL.START} self.axisMap = {4 : HAL.WHAMMY, 2 : HAL.EFFECT, 3 : HAL.TILT} self.hatMap = {0 : { (0, -1) : HAL.STRUM_DOWN, (0, 1) : HAL.STRUM_UP} } self.axisDefault = {4 : -1.0} self.hatDefault = {} self.hal = HAL(self.buttonMap, self.axisMap, self.hatMap, self.axisDefault, self.hatDefault) '''Sounds!''' self.clashingSwords = load_sound("swords_1Clash.ogg") """Create the Screen""" #screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) #self.mainScreenBackground, self.mainScreenBackgroundRect = load_image("SamuraiJam_MainScreen.jpg") #mainScreenBackground = pygame.image.load("../../data/SamuraiJam_MainScreen.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, mainScreenBackgroundRect) #screen.fill((255,255,255)) #mainScreenBackground,mainScreenBackgroundRect = load_image("samuraiFlute.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, (700,0)) #create a translucent overlay self.winSurface = pygame.Surface((screen.get_width(),screen.get_height())) # the size of your rect self.winSurface.set_alpha(255) # alpha level self.winSurface.fill((255,255,255)) # this fills the entire surface screen.blit(self.winSurface, (0,0)) # (0,0) are the top-left coordinates font = Font(None, 60) text = font.render("Your Score: " + str(new_score), 1, (0,0,0)) screen.blit(text, (375,50)) text = font.render("Your Progress: " + str(percent_played) + "%", 1, (0,0,0)) screen.blit(text, (325, 100)) font = Font(None, 100) text = font.render("High Scores:", 1, (0,0,0)) screen.blit(text, (300,150)) t = 0 font = Font(None, 40) for name, score in scores: text = font.render(name + " " + score.rstrip(), 1, (0,0,0)) screen.blit(text, (425,250+40*t)) t = t+1 '''Create the menu''' # Create 3 diffrent menus. One of them is only text, another one is only # images, and a third is -gasp- a mix of images and text buttons! To # understand the input factors, see the menu file menu = cMenu(50, 50, 20, 5, 'vertical', 100, screen, [('Continue', 1, None)]) #set the unselected color for menu items menu.set_unselected_color(BLACK) # Center the menu on the draw_surface (the entire screen here) menu.set_center(False, False) # Center the menu on the draw_surface (the entire screen here) #menu.set_alignment('center', 'center') menu.set_position(800,200) # Create the state variables (make them different so that the user event is # triggered at the start of the "while 1" loop so that the initial display # does not wait for user input) state = 0 prev_state = 1 # rect_list is the list of pygame.Rect's that will tell pygame where to # update the screen (there is no point in updating the entire screen if only # a small portion of it changed!) rect_list = [] # Ignore mouse motion (greatly reduces resources when not needed) pygame.event.set_blocked(pygame.MOUSEMOTION) stillPaused = True # The main while loop while stillPaused: # Check if the state has changed, if it has, then post a user event to # the queue to force the menu to be shown at least once if prev_state != state: pygame.event.post(pygame.event.Event(EVENT_CHANGE_STATE, key = 0)) prev_state = state # Get the next event e = pygame.event.wait() if sys.platform == "win32": if e.type == pygame.JOYHATMOTION: g_state = self.hal.parseAll(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) elif sys.platform == "darwin": if e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) # Update the menu, based on which "state" we are in - When using the menu # in a more complex program, definitely make the states global variables # so that you can refer to them by a name if e.type == pygame.KEYDOWN or e.type == EVENT_CHANGE_STATE: print "Current State: {0}".format(state) if state == 0: rect_list, state = menu.update(e, state) elif state == 1: print 'Main Menu' self.clashingSwords.play() stillPaused = False Constants.fluteMusic.stop() elif state == 2: print 'Replay' self.clashingSwords.play() Constants.fluteMusic.stop() song_name = '.../data/songs/' + raw_level_name + '.txt' m = MainGame(song_name, screen) m.game_loop() #Constants.sexyMusic.stop() #m = MainGame(screen) #m.game_loop() #screen.fill((255,255,255)) #Constants.sexyMusic.stop() #pygame.mixer.music.stop(); #Constants.fluteMusic.play() stillPaused = False #update the screen pygame.display.update(rect_list) pygame.display.flip()
def mainLoop(self): screen = self.screen """Joystick""" self.joy=pygame.joystick.Joystick(0) self.joy.init() #self.numbutton = self.joy.get_numbuttons() if sys.platform == "darwin": self.buttonMap = {11 : HAL.GREEN, 12 : HAL.RED, 13 : HAL.BLUE, 14 : HAL.YELLOW, 8 : HAL.ORANGE, 5 : HAL.BACK, 4 : HAL.START, 1 : HAL.STRUM_DOWN, 0 : HAL.STRUM_UP} self.axisMap = {4 : HAL.WHAMMY, 1 : HAL.EFFECT, 5 : HAL.TILT, 2 : HAL.NOTHING, 3 : HAL.NOTHING} self.hatMap = {0 : {} } self.axisDefault = {4 : -1.0} self.hatDefault = {} elif sys.platform == "win32": self.buttonMap = {0 : HAL.GREEN, 1 : HAL.RED, 2 : HAL.BLUE, 3 : HAL.YELLOW, 4 : HAL.ORANGE, 6 : HAL.BACK, 7 : HAL.START} self.axisMap = {4 : HAL.WHAMMY, 2 : HAL.EFFECT, 3 : HAL.TILT} self.hatMap = {0 : { (0, -1) : HAL.STRUM_DOWN, (0, 1) : HAL.STRUM_UP} } self.axisDefault = {4 : -1.0} self.hatDefault = {} self.hal = HAL(self.buttonMap, self.axisMap, self.hatMap, self.axisDefault, self.hatDefault) '''Sounds!''' self.clashingSwords = load_sound("swords_1Clash.ogg") pygame.event.set_blocked(pygame.MOUSEMOTION) """Create the Screen""" #screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) #self.mainScreenBackground, self.mainScreenBackgroundRect = load_image("SamuraiJam_MainScreen.jpg") #mainScreenBackground = pygame.image.load("../../data/SamuraiJam_MainScreen.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, mainScreenBackgroundRect) #screen.fill((255,255,255)) #mainScreenBackground,mainScreenBackgroundRect = load_image("samuraiFlute.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, (700,0)) #create a translucent overlay self.winSurface = pygame.Surface((screen.get_width(),screen.get_height())) # the size of your rect self.winSurface.set_alpha(255) # alpha level self.winSurface.fill((255,255,255)) # this fills the entire surface screen.blit(self.winSurface, (0,0)) # (0,0) are the top-left coordinates font = Font(None, 60) text = font.render("NEW HIGH SCORE!!!", 1, (0,0,0)) screen.blit(text, (350,50)) text = font.render("Enter your initials:", 1, (0,0,0)) screen.blit(text, (345, 100)) font = Font(None, 40) for i in range(0, 3): letter = 'A' done = False while not done: text = font.render(letter, 1, (0,0,0), (255,255,255)) screen.blit(text, (400 + 25*i, 150)) e = pygame.event.wait() if sys.platform == "win32": if e.type == pygame.JOYHATMOTION: g_state = self.hal.parseAll(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) elif sys.platform == "darwin": if e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) if e.type == pygame.KEYDOWN: if e.key == pygame.K_DOWN: dec = ord(letter) + 1 if dec > 90: dec = dec - 26 letter = chr(dec) elif e.key == pygame.K_UP: dec = ord(letter) - 1 if dec < 65: dec = dec +26 letter = chr(dec) elif e.key == pygame.K_RETURN: done = True pygame.display.flip() self.name = self.name + letter pygame.display.flip()
def mainLoop(self): screen = self.screen """Joystick""" self.joy=pygame.joystick.Joystick(0) self.joy.init() #self.numbutton = self.joy.get_numbuttons() if sys.platform == "darwin": self.buttonMap = {11 : HAL.GREEN, 12 : HAL.RED, 13 : HAL.BLUE, 14 : HAL.YELLOW, 8 : HAL.ORANGE, 5 : HAL.BACK, 4 : HAL.START, 1 : HAL.STRUM_DOWN, 0 : HAL.STRUM_UP} self.axisMap = {4 : HAL.WHAMMY, 1 : HAL.EFFECT, 5 : HAL.TILT, 2 : HAL.NOTHING, 3 : HAL.NOTHING} self.hatMap = {0 : {} } self.axisDefault = {4 : -1.0} self.hatDefault = {} elif sys.platform == "win32": self.buttonMap = {0 : HAL.GREEN, 1 : HAL.RED, 2 : HAL.BLUE, 3 : HAL.YELLOW, 4 : HAL.ORANGE, 6 : HAL.BACK, 7 : HAL.START} self.axisMap = {4 : HAL.WHAMMY, 2 : HAL.EFFECT, 3 : HAL.TILT} self.hatMap = {0 : { (0, -1) : HAL.STRUM_DOWN, (0, 1) : HAL.STRUM_UP} } self.axisDefault = {4 : -1.0} self.hatDefault = {} self.hal = HAL(self.buttonMap, self.axisMap, self.hatMap, self.axisDefault, self.hatDefault) '''Sounds!''' self.clashingSwords = load_sound("swords_1Clash.ogg") pygame.event.set_blocked(pygame.MOUSEMOTION) """Create the Screen""" #screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) #self.mainScreenBackground, self.mainScreenBackgroundRect = load_image("SamuraiJam_MainScreen.jpg") #mainScreenBackground = pygame.image.load("../../data/SamuraiJam_MainScreen.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, mainScreenBackgroundRect) #screen.fill((255,255,255)) #mainScreenBackground,mainScreenBackgroundRect = load_image("samuraiFlute.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, (700,0)) #create a translucent overlay self.winSurface = pygame.Surface((screen.get_width(),screen.get_height())) # the size of your rect self.winSurface.set_alpha(255) # alpha level self.winSurface.fill((0,0,0)) # this fills the entire surface screen.blit(self.winSurface, (0,0)) # (0,0) are the top-left coordinates state = 0 prev_state = 1 done = False while not done: if prev_state != state: pygame.event.post(pygame.event.Event(EVENT_CHANGE_STATE, key = 0)) prev_state = state e = pygame.event.wait() if e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.GREEN in g_state and g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RIGHT) elif (HAL.RED in g_state and g_state[HAL.RED] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_LEFT) if e.type == pygame.KEYDOWN or e.type == EVENT_CHANGE_STATE: if e.key == pygame.K_RIGHT: state = state + 1 elif e.key == pygame.K_LEFT: state = state - 1 screen.fill((0,0,0)) font = Font(None, 60) text = font.render("How to Play:", 1, (255,255,255)) screen.blit(text, (400,50)) font = Font(None, 40) text = font.render("Press GREEN to continue or RED to go back", 1, (255,255,255)) screen.blit(text, (250, 120)) if state == 0: text = font.render("This is a path that you can move on:", 1, (255,255,255)) screen.blit(text, (50,200)) image = load_image("dirtPathPanel.jpg")[0] screen.blit(image, (600,200)) text = font.render("This is Sam:", 1, (255,255,255)) screen.blit(text, (50,250)) image = load_image("samurai_sprites/chr06164.png", -1)[0] screen.blit(image, (250,250)) text = font.render("This is a bridge:", 1, (255,255,255)) screen.blit(text, (50,300)) image = load_image("bridges/blue_bridge.png", -1)[0] screen.blit(image, (350, 270)) text = font.render("To cross a bridge, STRUM the guitar controller while", 1, (255,255,255)) screen.blit(text, (50, 350)) text = font.render("holding down the corresponding colored button", 1, (255,255,255)) screen.blit(text, (50,380)) text = font.render("This is a mine", 1, (255,255,255)) screen.blit(text, (50,430)) image = load_image("mine_blink/mine_1.png", -1)[0] screen.blit(image, (250,430)) text = font.render("You want to avoid all mines.", 1, (255,255,255)) screen.blit(text, (50,460)) prev_state = 0 elif state == 1: text = font.render("ENEMIES:", 1, (255,255,255)) screen.blit(text, (400,170)) text = font.render("This is a groupie:", 1, (255,255,255)) screen.blit(text, (50,210)) image = load_image_from_folder('groupieNEW', 'groupie_1.png', -1)[0] screen.blit(image, (350,185)) text = font.render("They hate being clean and are destroyed by your water attack", 1, (255,255,255)) screen.blit(text, (50,240)) text = font.render("To do your water attack: STRUM the guitar controller", 1, (255,255,255)) screen.blit(text, (50,270)) text = font.render("while holding the GREEN and BLUE buttons", 1, (255,255,255)) screen.blit(text, (50,300)) text = font.render("This is a bodyguard:", 1, (255,255,255)) screen.blit(text, (50,340)) image = load_image("guard/guard.png", -1)[0] screen.blit(image, (450,315)) text = font.render("They are strong and need to be defeated by your fiery sword", 1, (255,255,255)) screen.blit(text, (50,370)) text = font.render("To do your fire sword attack: STRUM the guitar controller", 1, (255,255,255)) screen.blit(text, (50,400)) text = font.render("while holding the RED and YELLOW buttons", 1, (255,255,255)) screen.blit(text, (50,430)) text = font.render("This is a lawyer:", 1, (255,255,255)) screen.blit(text, (50,470)) image = load_image("lawyer/lawyer_ZZZ30.png", -1)[0] screen.blit(image, (300,445)) text = font.render("They are very stiff and need to be mellowed by a face melting solo", 1, (255,255,255)) screen.blit(text, (50,500)) text = font.render("To do a face melting solo: STRUM the guitar controller", 1, (255,255,255)) screen.blit(text, (50,530)) text = font.render("while holding the GREEN and YELLOW buttons", 1, (255,255,255)) screen.blit(text, (50,560)) prev_state = 1 elif state == 2: text = font.render("KI:", 1, (255,255,255)) screen.blit(text, (400,200)) text = font.render("Ki is ancient spiritual energy that a Jamurai can harvest.", 1, (255,255,255)) screen.blit(text, (50,250)) text = font.render("Your Ki level is tracked in the status bar above next to your health.", 1, (255,255,255)) screen.blit(text, (50,290)) text = font.render("Using your special attacks costs Ki, but killing enemies replenishes it.", 1, (255,255,255)) screen.blit(text, (50,330)) text = font.render("Using the correct attack on an enemy will take one hit to defeat them", 1, (255,255,255)) screen.blit(text, (50,370)) text = font.render("and have no net loss of Ki. The wrong attack will still hurt enemies,", 1, (255,255,255)) screen.blit(text, (50,410)) text = font.render("but will take multiple hits to work and therefore cost Ki. You may also use", 1, (255,255,255)) screen.blit(text, (50,450)) text = font.render("your basic attack on enemies, although it is even weaker than the wrong attack.", 1, (255,255,255)) screen.blit(text, (50,490)) text = font.render("To do your basic slash attack: STRUM the guitar controller", 1, (255,255,255)) screen.blit(text, (50,530)) text = font.render("while holding the GREEN and RED buttons", 1, (255,255,255)) screen.blit(text, (50,570)) prev_state = 2 elif state == 3: text = font.render("POWERUPS:", 1, (255,255,255)) screen.blit(text, (400,200)) text = font.render("You may pick up powerups along your journey.", 1, (255,255,255)) screen.blit(text, (50,250)) text = font.render("This is a health pack:", 1, (255,255,255)) screen.blit(text, (50,300)) image = load_image("powerups/health_pack.png", -1)[0] screen.blit(image, (450,300)) text = font.render("It increases your health as seen in the status bar.", 1, (255,255,255)) screen.blit(text, (50,330)) text = font.render("This is a Ki booster:", 1, (255,255,255)) screen.blit(text, (50,380)) image = load_image("powerups/ki_pickup.png", -1)[0] screen.blit(image, (450,380)) text = font.render("It increases your Ki level as seen in the status bar.", 1, (255,255,255)) screen.blit(text, (50,410)) text = font.render("This is a shield:", 1, (255,255,255)) screen.blit(text, (50,460)) image = load_image("powerups/shield_pickup.png", -1)[0] screen.blit(image, (450,460)) text = font.render("It protects you from enemies for a period of time.", 1, (255,255,255)) screen.blit(text, (50,490)) text = font.render("This is a special sword:", 1, (255,255,255)) screen.blit(text, (50,540)) image = load_image("powerups/sword_pickup.png", -1)[0] screen.blit(image, (450,540)) text = font.render("It makes your basic slash more powerful for a period of time.", 1, (255,255,255)) screen.blit(text, (50,570)) prev_state = 3 else: done = True pygame.display.flip()
def mainLoop(self): screen = self.screen """Joystick""" self.joy=pygame.joystick.Joystick(0) self.joy.init() #self.numbutton = self.joy.get_numbuttons() if sys.platform == "darwin": self.buttonMap = {11 : HAL.GREEN, 12 : HAL.RED, 13 : HAL.BLUE, 14 : HAL.YELLOW, 8 : HAL.ORANGE, 5 : HAL.BACK, 4 : HAL.START, 1 : HAL.STRUM_DOWN, 0 : HAL.STRUM_UP} self.axisMap = {4 : HAL.WHAMMY, 1 : HAL.EFFECT, 5 : HAL.TILT, 2 : HAL.NOTHING, 3 : HAL.NOTHING} self.hatMap = {0 : {} } self.axisDefault = {4 : -1.0} self.hatDefault = {} elif sys.platform == "win32": self.buttonMap = {0 : HAL.GREEN, 1 : HAL.RED, 2 : HAL.BLUE, 3 : HAL.YELLOW, 4 : HAL.ORANGE, 6 : HAL.BACK, 7 : HAL.START} self.axisMap = {4 : HAL.WHAMMY, 2 : HAL.EFFECT, 3 : HAL.TILT} self.hatMap = {0 : { (0, -1) : HAL.STRUM_DOWN, (0, 1) : HAL.STRUM_UP} } self.axisDefault = {4 : -1.0} self.hatDefault = {} self.hal = HAL(self.buttonMap, self.axisMap, self.hatMap, self.axisDefault, self.hatDefault) '''Sounds!''' self.clashingSwords = load_sound("swords_1Clash.ogg") """Create the Screen""" #screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) #self.mainScreenBackground, self.mainScreenBackgroundRect = load_image("SamuraiJam_MainScreen.jpg") #mainScreenBackground = pygame.image.load("../../data/SamuraiJam_MainScreen.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, mainScreenBackgroundRect) #screen.fill((255,255,255)) #mainScreenBackground,mainScreenBackgroundRect = load_image("samuraiFlute.jpg") #mainScreenBackgroundRect = mainScreenBackground.get_rect() #blit once first to avoid graphics conflicts with the menu #screen.blit(mainScreenBackground, (700,0)) #create a translucent overlay self.pauseSurface = pygame.Surface((screen.get_width(),screen.get_height())) # the size of your rect self.pauseSurface.set_alpha(128) # alpha level self.pauseSurface.fill((0,0,0)) # this fills the entire surface screen.blit(self.pauseSurface, (0,0)) # (0,0) are the top-left coordinates '''Create the menu''' # Create 3 diffrent menus. One of them is only text, another one is only # images, and a third is -gasp- a mix of images and text buttons! To # understand the input factors, see the menu file menu = cMenu(50, 50, 20, 5, 'vertical', 100, screen, [('Resume', 1, None)]) #set the unselected color for menu items menu.set_unselected_color(BLACK) # Center the menu on the draw_surface (the entire screen here) menu.set_center(False, False) # Center the menu on the draw_surface (the entire screen here) #menu.set_alignment('center', 'center') menu.set_position(50,50) # Create the state variables (make them different so that the user event is # triggered at the start of the "while 1" loop so that the initial display # does not wait for user input) state = 0 prev_state = 1 # rect_list is the list of pygame.Rect's that will tell pygame where to # update the screen (there is no point in updating the entire screen if only # a small portion of it changed!) rect_list = [] # Ignore mouse motion (greatly reduces resources when not needed) pygame.event.set_blocked(pygame.MOUSEMOTION) stillPaused = True self.globalPauseSignal = True # The main while loop while stillPaused: # Check if the state has changed, if it has, then post a user event to # the queue to force the menu to be shown at least once if prev_state != state: pygame.event.post(pygame.event.Event(EVENT_CHANGE_STATE, key = 0)) prev_state = state # Get the next event e = pygame.event.wait() if sys.platform == "win32": if e.type == pygame.JOYHATMOTION: g_state = self.hal.parseAll(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) elif sys.platform == "darwin": if e.type == pygame.JOYBUTTONDOWN: g_state = self.hal.parseButton(self.joy) if (HAL.STRUM_DOWN in g_state and g_state[HAL.STRUM_DOWN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_DOWN) elif (HAL.STRUM_UP in g_state and g_state[HAL.STRUM_UP] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_UP) elif (HAL.GREEN in g_state) and (g_state[HAL.GREEN] == True): e = pygame.event.Event(pygame.KEYDOWN, key = pygame.K_RETURN) # Update the menu, based on which "state" we are in - When using the menu # in a more complex program, definitely make the states global variables # so that you can refer to them by a name if e.type == pygame.KEYDOWN or e.type == EVENT_CHANGE_STATE: print "Current State: {0}".format(state) if state == 0: rect_list, state = menu.update(e, state) elif state == 1: print 'Resume' self.clashingSwords.play() stillPaused = False elif state == 2: print 'Quit' self.clashingSwords.play() #Constants.sexyMusic.stop() #m = MainGame(screen) #m.game_loop() #screen.fill((255,255,255)) #Constants.sexyMusic.stop() #pygame.mixer.music.stop(); #Constants.fluteMusic.play() stillPaused = False self.globalPauseSignal = False #update the screen pygame.display.update(rect_list)