def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0,0,0)) titleImage = pygame.image.load(os.path.join('img', 'GameOverScreen.png')) titleImage2 = pygame.image.load(os.path.join('img', 'GameOverScreen_v2.png')) #For screen animation self.frames = [titleImage,titleImage2] self.maxFrame = len(self.frames) self.timer = 30 self.currentTimer = 0 self.currentFrame = 0 self.screen.blit(self.frames[self.currentFrame], (0, 0)) self.type = GAME_OVER_SCREEN self.nextScene = None self.drawer = Drawer()
def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.mapData.notifySet.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.gameData) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() # Pour fair afficher un score... en construction! # self.score = ScoreDisplay() # self.mapData.spritesHUD.add(self.score) MusicFactory(PLATFORM_SCREEN, self.mapData.nameMap)
class PlatformScreen: def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.mapData.notifySet.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.gameData) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() # Pour fair afficher un score... en construction! # self.score = ScoreDisplay() # self.mapData.spritesHUD.add(self.score) MusicFactory(PLATFORM_SCREEN, self.mapData.nameMap) def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandler.eventHandle() self.logicHandler.handle(self.player, self.gameData) self.checkNewMap(self.logicHandler.newMapData) self.drawer.draw(self.screen, self.mapData.camera, self.mapData.spritesHUD, self.player) def checkNewMap(self, newMapData): if newMapData is not None: # we got to change self.sceneRunning = False self.nextScene = WORLD_MAP self.gameData.typeScene = WORLD_MAP self.gameData.mapData = newMapData def close(self): self.sceneRunning = False def backToMain(self): self.nextScene = TITLE_SCREEN self.gameData.typeScene = TITLE_SCREEN self.close() def backToWorldMap(self): newMapData = MapData('WorldMap', 'StartPointWorld') self.checkNewMap(newMapData)
class GameOverScreen: def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0,0,0)) titleImage = pygame.image.load(os.path.join('img', 'GameOverScreen.png')) titleImage2 = pygame.image.load(os.path.join('img', 'GameOverScreen_v2.png')) #For screen animation self.frames = [titleImage,titleImage2] self.maxFrame = len(self.frames) self.timer = 30 self.currentTimer = 0 self.currentFrame = 0 self.screen.blit(self.frames[self.currentFrame], (0, 0)) self.type = GAME_OVER_SCREEN self.nextScene = None self.drawer = Drawer() def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandle() # EventHandle in THIS file, below # This would be in the logic self.update() self.drawer.draw(self.screen, None, None, None) # Drawer in THIS file, below def eventHandle(self): for event in pygame.event.get(): if event.type == pygame.QUIT: quitGame() if event.type == pygame.KEYDOWN: self.goToTitleScreen() def update(self): self.currentTimer += 1 if self.currentTimer >= self.timer: self.currentFrame = (self.currentFrame + 1) % (self.maxFrame) self.currentTimer = 0 self.screen.blit(self.frames[self.currentFrame],(0,0)) def goToTitleScreen(self): self.nextScene = TITLE_SCREEN self.sceneRunning = False self.gameData.typeScene = TITLE_SCREEN self.gameData.mapData = None
class PlatformScreen: def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.player) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() #Menu self.menuPause = MenuPause(screen, self.backToMain,backToWorldMap=self.backToWorldMap) self.eventHandler.menuPause = self.menuPause MusicFactory(PLATFORM_SCREEN, self.mapData.nameMap) def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandler.eventHandle() self.logicHandler.handle(self.player, self.gameData) self.checkNewMap(self.logicHandler.newMapData) self.drawer.draw(self.screen, self.mapData.camera, self.mapData.spritesHUD, self.player) def checkNewMap(self, newMapData): if newMapData is not None: # we got to change self.sceneRunning = False self.nextScene = WORLD_MAP self.gameData.typeScene = WORLD_MAP self.gameData.mapData = newMapData def close(self): self.sceneRunning = False def backToMain(self): self.nextScene = TITLE_SCREEN self.gameData.typeScene = TITLE_SCREEN self.menuPause.close() self.close() def backToWorldMap(self): newMapData = MapData('WorldMap', 'StartPointWorld') self.checkNewMap(newMapData) self.menuPause.close()
class WorldMap: def __init__(self, screen, gameData): # Écran self.screen = screen self.gameData = gameData self.mapData = self.gameData.mapData self.player = Player(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.camera = self.mapData.camera # Handler self.eventHandlerWorldMap = EventHandlerWorldMap() self.logicHandler = LogicHandlerWorldMap(self.player, self.gameData) self.drawer = Drawer() self.nextScene = None MusicFactory(WORLD_MAP) def mainLoop(self): self.sceneRunning = True while self.sceneRunning: oldTilePosX = deepcopy(self.player.tileX) oldTilePosY = deepcopy(self.player.tileY) self.eventHandlerWorldMap.eventHandle(self.player) self.logicHandler.handle(self.player, oldTilePosX, oldTilePosY) self.checkNewMap(self.logicHandler.newMapData) self.drawer.draw(self.screen, self.mapData.camera, self.mapData.spritesHUD, self.player) if self.nextScene == None: self.nextScene = self.logicHandler.endState def checkNewMap(self, newMapData): if newMapData is not None: # we got to change self.sceneRunning = False self.nextScene = PLATFORM_SCREEN self.gameData.typeScene = PLATFORM_SCREEN self.gameData.mapData = newMapData def close(self): self.sceneRunning = False #To stop game running
def __init__(self, screen, gameData): # Écran self.screen = screen self.gameData = gameData self.mapData = self.gameData.mapData self.player = Player(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.camera = self.mapData.camera # Handler self.eventHandlerWorldMap = EventHandlerWorldMap() self.logicHandler = LogicHandlerWorldMap(self.player, self.gameData) self.drawer = Drawer() self.nextScene = None MusicFactory(WORLD_MAP)
def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.spritesHUD.add(self.player.lifeBar) self.mapData.spritesHUD.add(self.player.powerBar) self.mapData.camera.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.player) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() self.levelCompleteSprite = LevelComplete() self.levelComplete = False self.levelCompleteCounter = 0
class TitleScreen: def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0, 0, 0)) titleImage = pygame.image.load(os.path.join('img', 'menu.png')) self.screen.blit(titleImage, (0, 0)) # Define MainMenu self.menu = Menu( pygame.Rect(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 12 / 16, SCREEN_WIDTH / 3, SCREEN_HEIGHT * 0.25)) self.menu.addOption('Start', self.startGame) self.menu.addOption('Exit', sys.exit) self.eventHandler = EventHandlerTitleScreen(self.menu) self.drawer = Drawer() self.type = TITLE_SCREEN self.nextScene = None MusicFactory(TITLE_SCREEN) def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandler.eventHandle(self.menu.optionList, self.menu.selector) self.menu.update() # This would be in the logic self.drawer.draw(self.screen, None, self.menu, None) # Drawer in THIS file, below def startGame(self): self.nextScene = PLATFORM_SCREEN self.sceneRunning = False self.gameData.typeScene = PLATFORM_SCREEN self.gameData.mapData = MapData("LevelSheriff", "StartPointWorld")
def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0, 0, 0)) titleImage = pygame.image.load(os.path.join('img', 'menu.png')) self.screen.blit(titleImage, (0, 0)) # Define MainMenu self.menu = Menu( pygame.Rect(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 12 / 16, SCREEN_WIDTH / 3, SCREEN_HEIGHT * 0.25)) self.menu.addOption('Start', self.startGame) self.menu.addOption('Exit', sys.exit) self.eventHandler = EventHandlerTitleScreen(self.menu) self.drawer = Drawer() self.type = TITLE_SCREEN self.nextScene = None MusicFactory(TITLE_SCREEN)
def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0, 0, 0)) titleImage = pygame.image.load(os.path.join('img', 'title_v1.png')) self.screen.blit(titleImage, (0, 0)) # Define MainMenu self.menuWidth = 5 * SCREEN_WIDTH / 12 self.menuTotalHeight = SCREEN_HEIGHT * 0.40 self.menuHeight = self.menuTotalHeight self.createMenu() self.eventHandler = EventHandlerTitleScreen() self.drawer = Drawer() self.type = TITLE_SCREEN self.sceneRunning = True self.nextScene = None
def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.camera.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.player) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() #Menu self.menuPause = MenuPause(screen, self.backToMain,backToWorldMap=self.backToWorldMap) self.eventHandler.menuPause = self.menuPause MusicFactory(PLATFORM_SCREEN, self.mapData.nameMap)
class TitleScreen: def __init__(self, screen, gameData=None): self.screen = screen self.gameData = gameData self.screen.fill((0, 0, 0)) titleImage = pygame.image.load(os.path.join('img', 'title_v1.png')) self.screen.blit(titleImage, (0, 0)) # Define MainMenu self.menuWidth = 5 * SCREEN_WIDTH / 12 self.menuTotalHeight = SCREEN_HEIGHT * 0.40 self.menuHeight = self.menuTotalHeight self.createMenu() self.eventHandler = EventHandlerTitleScreen() self.drawer = Drawer() self.type = TITLE_SCREEN self.sceneRunning = True self.nextScene = None def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandler.eventHandle(self.menu.optionList, self.menu.selector) self.menu.spritesMenu.update() # This would be in the logic self.drawer.draw(self.screen, None, self.menu.spritesMenu, None) # Drawer in THIS file, below def createMenu(self): self.setMenuHeight() self.menu = Menu( pygame.Rect(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 4 / 7, self.menuWidth, self.menuHeight), 18) if not self.gameData.mapComplete['map1']: self.menu.addOption('Level: the Exploding Phonograph', self.startLvlMusic) if not self.gameData.mapComplete['map2']: self.menu.addOption('Level: the Crazy Computer', self.startLvlComm) self.menu.addOption('How To Play', self.startInstruction) self.menu.addOption('Credit', self.startCredit) self.menu.addOption('Exit', sys.exit) def setMenuHeight(self): numLevelComplete = sum(self.gameData.mapComplete.values()) totalOptionNum = len(self.gameData.mapComplete) + 3 self.menuHeight = self.menuTotalHeight * ( totalOptionNum - numLevelComplete) / totalOptionNum def startLvlMusic(self): self.nextScene = PLATFORM_SCREEN self.sceneRunning = False self.gameData.typeScene = PLATFORM_SCREEN self.gameData.mapData = MapData("LevelMusic", "StartPointMusic") if TAG_BP == 1 or TAG_MARIE == 1: #To try any level rapidly. self.gameData.mapData = MapData("LevelCommBoss", "StartPointCommBoss") if TAG_MARIE == 2: #To try any level rapidly. self.gameData.mapData = MapData("LevelMusicBoss", "StartPointMusicBoss") def startLvlComm(self): self.nextScene = PLATFORM_SCREEN self.sceneRunning = False self.gameData.typeScene = PLATFORM_SCREEN self.gameData.mapData = MapData("LevelComm", "StartPointComm") def startCredit(self): self.nextScene = CREDIT_SCREEN self.sceneRunning = False self.gameData.typeScene = CREDIT_SCREEN def startInstruction(self): self.nextScene = INSTRUCTION_SCREEN self.sceneRunning = False self.gameData.typeScene = INSTRUCTION_SCREEN
class PlatformScreen: def __init__(self, screen, gameData): self.screen = screen self.gameData = gameData self.nextScene = None self.mapData = self.gameData.mapData self.player = PlayerPlatform(self.mapData.spawmPointPlayerx, self.mapData.spawmPointPlayery, self.mapData) self.mapData.allSprites.add(self.player) self.mapData.spritesHUD.add(self.player.lifeBar) self.mapData.spritesHUD.add(self.player.powerBar) self.mapData.camera.add(self.player) self.camera = self.mapData.camera self.eventHandler = EventHandlerPlatformScreen(self.player) self.logicHandler = LogicHandlerPlatformScreen(self.screen, self.player, self.mapData) self.drawer = Drawer() self.levelCompleteSprite = LevelComplete() self.levelComplete = False self.levelCompleteCounter = 0 #MusicFactory(PLATFORM_SCREEN, self.mapData.nameMap) def mainLoop(self): self.sceneRunning = True while self.sceneRunning: self.eventHandler.eventHandle() self.logicHandler.handle(self.player, self.gameData) self.checkTrap(self.logicHandler.trapNumber) self.checkNewMap(self.logicHandler.newMapData) self.drawer.draw(self.screen, self.mapData.camera, self.mapData.spritesHUD, self.player) self.checkWinCondition() if self.logicHandler.endState is not None: print('in endState Loop') self.nextScene = self.logicHandler.endState self.gameData.typeScene = self.logicHandler.endState self.sceneRunning = False def checkNewMap(self, newMapData): if newMapData is not None: # we got to change self.sceneRunning = False self.nextScene = PLATFORM_SCREEN self.gameData.typeScene = PLATFORM_SCREEN self.gameData.mapData = newMapData def checkTrap(self, trapNumber): if trapNumber >=0: # we got to change for enemy in self.mapData.enemyGroup.sprites(): if enemy.name == 'EnemyPhone' : if enemy.imagePhoneNumber == trapNumber : enemy.fallDown() def checkWinCondition(self): if self.mapData.nameMap == "LevelMusicBoss": stillAlive = False for enemy in self.mapData.enemyGroup: if enemy.name == "enemyMusicBoss": stillAlive = True if stillAlive == False and self.levelComplete == False: self.win() elif self.levelComplete == True: self.levelCompleteCounter += 1 if self.levelCompleteCounter == 240: self.gameData.mapComplete["map1"] = True self.checkWinGame() if self.mapData.nameMap == "LevelCommBoss": stillAlive = False for enemy in self.mapData.enemyGroup: if enemy.name == "enemyCommBoss": stillAlive = True if stillAlive == False and self.levelComplete == False: self.win() elif self.levelComplete == True: self.levelCompleteCounter += 1 if self.levelCompleteCounter == 240: self.gameData.mapComplete["map2"] = True self.checkWinGame() def checkWinGame(self): numberLevelComplete = sum(self.gameData.mapComplete.values()) if numberLevelComplete == len(self.gameData.mapComplete): self.nextScene = WIN_SCREEN self.gameData.typeScene = WIN_SCREEN self.close() else: self.backToMain() def win(self): self.mapData.spritesHUD.add(self.levelCompleteSprite) self.levelComplete = True def close(self): self.sceneRunning = False def backToMain(self): self.nextScene = TITLE_SCREEN self.gameData.typeScene = TITLE_SCREEN self.close()