def displayScreen(self): self.timer = 4.0 * FRAMES_PER_SECOND sequence = 1 * FRAMES_PER_SECOND while self.timer: self.handleEvents() self.screen.fill(FILL_COLOR) if self.music: utility.playMusic(self.music) self.timer -= 1 self.image.draw(self.screen) if self.timer >= 3 * FRAMES_PER_SECOND: utility.dim((sequence / (1.0 * FRAMES_PER_SECOND)) * 255) sequence -= 1 if self.timer <= 1 * FRAMES_PER_SECOND: if self.fadeImage: utility.dim((sequence / (1.0 * FRAMES_PER_SECOND)) * 255) sequence += 1 pygame.display.flip() self.clock.tick(FRAMES_PER_SECOND)
def gameBeat(self): highScore = readHighScores() if self.player.score < highScore[self.worldNumber]: worldEndDictionary = {HIGH_SCORE:["High Score For This World: " +str(highScore[self.worldNumber]), "You would need to score " + str(highScore[self.worldNumber] - self.player.score) + " more to beat it!"], NEXT_WORLD:["Credits", "On to the Credits!"]} elif self.player.score == highScore[self.worldNumber]: worldEndDictionary = {HIGH_SCORE:["High Score For This World: " + str(highScore[self.worldNumber]), "You Tied the High Score!"], NEXT_WORLD:["Credits", "On to the Credits!"]} else: worldEndDictionary = {HIGH_SCORE:["High Score For This World: " + str(highScore[self.worldNumber]), "You Beat the High Score!"], NEXT_WORLD:["Credits", "On to the Credits!"]} highScore[self.worldNumber] = self.player.score writeHighScores(highScore) utility.dim(128,FILL_COLOR) worldEndMenu = menu.Menu(self.screen, self.musicList[self.worldNumber], self.screen.convert(), [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Congratulations!",64,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], worldEndDictionary).displayMenu() utility.fadeMusic() credits.Credits(self.screen,self.musicList[MENU_MUSIC]) self.done = True
def handleEvents(self): for event in pygame.event.get(): if (event.type == KEYDOWN and event.key == K_ESCAPE) or (event.type == MOUSEBUTTONDOWN and event.button == 3) or (event.type == ACTIVEEVENT and event.gain == 0): utility.dim(128,FILL_COLOR) """takingScreenShot = True while takingScreenShot: for shotEvent in pygame.event.get(): if (event.type == pygame.MOUSEBUTTONDOWN): takingScreenShot = False""" screenGrab = self.screen.copy() pauseMenuRunning = True while pauseMenuRunning: pauseMenu = menu.Menu(self.screen, self.musicList[self.worldNumber], screenGrab, [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Pause",128,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], pauseMenuDictionary).displayMenu() if pauseMenu == OPTION_MENU: optionResult = True lastHighlighted = 0 while optionResult: optionMenuDictionary = {SOUND_MENU:["Sound Options", "Change Sound Options"], DISPLAY_MENU:["Video Options" ,"Change Video Options"], CHANGE_SENSITIVITY:["Mouse Sensitivity: " + getSensitivity(settingList[SENSITIVITY]), "Change Mouse Sensitivity"], EXIT_OPTIONS:["Back","Go Back to the Main Menu"]} sensitivityMenuDictionary = {0:["Very Low", "Change Sensitivty to Very Low"], 1:["Low", "Change Sensitivty to Low"], 2:["Normal", "Change Sensitivty to Normal"], 3:["High", "Change Sensitivty to High"], 4:["Very High", "Change Sensitivty to Very High"],} soundMenuDictionary = {TOGGLE_SFX:["Sound Effects: " + on(settingList[SFX]), "Turn " + on(not settingList[SFX]) + " Sound Effects"], TOGGLE_MUSIC:["Music: " + on(settingList[MUSIC]),"Turn " + on(not settingList[MUSIC]) + " Music"], EXIT_OPTIONS:["Back","Go Back to the Option Menu"]} displayMenuDictionary = {TOGGLE_PARTICLES:["Particles: " + able(settingList[PARTICLES]), "Turn " + on(not settingList[PARTICLES]) + " Particle Effects"], TOGGLE_FULLSCREEN:["Video Mode: " + getScreenMode(settingList[SETTING_FULLSCREEN]), "Switch To " + getScreenMode(not settingList[SETTING_FULLSCREEN]) + " Mode"], EXIT_OPTIONS:["Back","Go Back to the Main Menu"]} optionResult = menu.Menu(self.screen, self.musicList[self.worldNumber], screenGrab, [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Options",96,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], optionMenuDictionary, lastHighlighted).displayMenu() if optionResult == SOUND_MENU: soundResult = True lastHighLighted = 0 while soundResult: soundResult = menu.Menu(self.screen, self.musicList[self.worldNumber], screenGrab, [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Sound Options",96,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], soundMenuDictionary, lastHighlighted).displayMenu() if soundResult == TOGGLE_SFX: settingList[SFX] = not settingList[SFX] lastHighlighted = 0 elif soundResult == TOGGLE_MUSIC: settingList[MUSIC] = not settingList[MUSIC] if not settingList[MUSIC]: pygame.mixer.Channel(MUSIC_CHANNEL).stop() lastHighlighted = 1 elif soundResult == EXIT_OPTIONS: soundResult = False soundMenuDictionary = {TOGGLE_SFX:["Sound Effects: " + on(settingList[SFX]), "Turn " + on(not settingList[SFX]) + " Sound Effects"], TOGGLE_MUSIC:["Music: " + on(settingList[MUSIC]),"Turn " + on(not settingList[MUSIC]) + " Music"], EXIT_OPTIONS:["Back","Go Back to the Option Menu"]} if optionResult == DISPLAY_MENU: displayResult = True lastHighlighted = 0 while displayResult: displayResult = menu.Menu(self.screen, self.musicList[self.worldNumber], screenGrab, [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Video Options",96,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], displayMenuDictionary, lastHighlighted).displayMenu() if displayResult == TOGGLE_PARTICLES: settingList[PARTICLES] = not settingList[PARTICLES] lastHighlighted = 0 elif displayResult == TOGGLE_FULLSCREEN: settingList[SETTING_FULLSCREEN] = not settingList[SETTING_FULLSCREEN] lastHighlighted = 1 pygame.mixer.quit() pygame.mixer.init() if settingList[SETTING_FULLSCREEN]: utility.setFullscreen() else: utility.setFullscreen(False) pygame.mouse.set_visible(False) elif displayResult == EXIT_OPTIONS: displayResult = False displayMenuDictionary = {TOGGLE_PARTICLES:["Particles: " + able(settingList[PARTICLES]), "Turn " + on(not settingList[PARTICLES]) + " Particle Effects"], TOGGLE_FULLSCREEN:["Video Mode: " + getScreenMode(settingList[SETTING_FULLSCREEN]), "Switch To " + getScreenMode(not settingList[SETTING_FULLSCREEN]) + " Mode"], EXIT_OPTIONS:["Back","Go Back to the Main Menu"]} elif optionResult == EXIT_OPTIONS: optionResult = False elif optionResult == CHANGE_SENSITIVITY: sensitivityResult = True lastHighlighted = 0 while sensitivityResult: sensitivityResult = menu.Menu(self.screen, self.musicList[self.worldNumber], screenGrab, [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Mouse Sensitivity",96,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], sensitivityMenuDictionary, lastHighlighted).displayMenu() if sensitivityResult == 0: settingList[SENSITIVITY] = .5 elif sensitivityResult == 1: settingList[SENSITIVITY] = .75 sensitivityResult = False elif sensitivityResult == 2: settingList[SENSITIVITY] = 1 sensitivityResult = False elif sensitivityResult == 3: settingList[SENSITIVITY] = 1.25 sensitivityResult = False elif sensitivityResult == 4: settingList[SENSITIVITY] = 1.5 sensitivityResult = False elif pauseMenu == RESUME_GAME or pauseMenu == False: pauseMenuRunning = False pygame.mouse.get_rel() elif pauseMenu == EXIT_GAME: utility.fadeMusic() utility.playMusic(self.musicList[MENU_MUSIC], True) self.done = True pauseMenuRunning = False elif event.type == MOUSEMOTION and self.player.lives: mousein = [pygame.mouse.get_pos()[0] - 512.0, pygame.mouse.get_pos()[1] - 384.0] if mousein[0] != 0 and mousein[1] != 0: self.player.fire() self.player.velocity = (self.player.velocity + mousein) / 1.5 * settingList[SENSITIVITY]
def run(self): while not self.done: if self.worldDone: if self.worldNumber < MAX_WORLD: self.worldBeat() """Resetting player lives so that it isn't in their best interest to play easier worlds just to have extra lives.""" self.player.lives = 3 self.player.lifeBoard.setText('x' + str(self.player.lives)) self.player.score = 0 self.player.nextBonus = 50000 """Loading the new world""" self.worldNumber += 1 if self.worldNumber == 0: self.newScene = scene.tutorialScene() elif self.worldNumber == 1: self.newScene = scene.forestScene() elif self.worldNumber == 2: self.newScene = scene.rockyScene() elif self.worldNumber == 3: self.newScene = scene.pinkScene() if self.worldNumber > settingList[WORLD_UNLOCKED]: settingList[WORLD_UNLOCKED] = self.worldNumber utility.playMusic(self.musicList[self.worldNumber],True) self.currentWorld = world.World(self.worldList[self.worldNumber], self.musicList[self.worldNumber]) self.currentWorld.load() self.worldDone = False else: self.gameBeat() self.checkCollision() self.update() self.draw() self.handleEvents() pygame.mouse.set_pos(MOUSE_DEFAULT_POSITION) pygame.mouse.get_rel() self.mouseLastMove = pygame.mouse.get_pos() self.timer.tick(FRAMES_PER_SECOND) if self.player.dead: highScore = readHighScores() if self.player.score < highScore[self.worldNumber]: endGameDictionary = {HIGH_SCORE:["High Score For This World: " + str(highScore[self.worldNumber]), "You would need to score " + str(highScore[self.worldNumber] - self.player.score) + " more to beat it!"], NEXT_WORLD:["Exit","Return To The Menu"]} elif self.player.score == highScore[self.worldNumber]: endGameDictionary = {HIGH_SCORE:["High Score For This World: " + str(highScore[self.worldNumber]), "You Tied the High Score!"], NEXT_WORLD:["Exit","Return To The Menu"]} else: endGameDictionary = {HIGH_SCORE:["High Score For This World: " + str(highScore[self.worldNumber]), "You Beat the High Score!"], NEXT_WORLD:["Exit","Return To The Menu"]} highScore[self.worldNumber] = self.player.score writeHighScores(highScore) utility.dim(128,FILL_COLOR) endGameMenu = menu.Menu(self.screen, self.musicList[self.worldNumber], self.screen.convert(), [0, SCREEN_HEIGHT / 3, SCREEN_WIDTH, SCREEN_HEIGHT], ["Game Over",128,SCREEN_WIDTH / 2, SCREEN_HEIGHT / 4], endGameDictionary).displayMenu() self.done = True utility.fadeMusic() utility.playMusic(self.musicList[MENU_MUSIC], True)