Example #1
0
    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()
Example #2
0
    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)
Example #3
0
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)
Example #4
0
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
Example #5
0
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()
Example #6
0
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
Example #7
0
    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)
Example #8
0
    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
Example #9
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")
Example #10
0
    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)
Example #11
0
    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
Example #12
0
    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)
Example #13
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', '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
Example #14
0
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()