示例#1
0
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 782
        self.player.rect.y = 912
        self.dead_sub_boss = 0      #Counts the dead Centurions.
        self.enemyGroup.add([Legionnaire(987, 768, self.player, director),
                             Legionnaire(1083, 768, self.player, director),
                             Legionnaire(1119, 768, self.player, director),
                             Legionnaire(987, 834, self.player, director),
                             Legionnaire(477, 747, self.player, director),
                             Legionnaire(645, 738, self.player, director),
                             Legionnaire(477, 891, self.player, director),
                             Legionnaire(645, 788, self.player, director),
                             Centurion(150, 288, self.player, director),
                             Centurion(1455, 288, self.player, director),
                             Centurion(1329, 1248, self.player, director)]) 

        self.door = Door(760, 575, 'door_sheet.png', -1, 'coordDoor.txt', [2], 'door_open.wav')     
        self.doorGroup = EntityGroup([])
        self.doorGroup.add(self.door)
        self.groups.append(self.doorGroup)

        self.bg = load_image("map_caesar_a_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image(
            "map_caesar_a_bg.png", Constants.BG_MAP_DIR)

        load_music("level_one.it")
        pygame.mixer.music.set_volume(1)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("wpns2.png", -1, pygame.Rect(344, 342, 28, 28), "blade_swing.wav", 0.5), \
                          WpnBow("items-1.png", None, pygame.Rect(0, 24, 24, 24))])
示例#2
0
class LevelOneA(Level):

    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 782
        self.player.rect.y = 912
        self.dead_sub_boss = 0      #Counts the dead Centurions.
        self.enemyGroup.add([Legionnaire(987, 768, self.player, director),
                             Legionnaire(1083, 768, self.player, director),
                             Legionnaire(1119, 768, self.player, director),
                             Legionnaire(987, 834, self.player, director),
                             Legionnaire(477, 747, self.player, director),
                             Legionnaire(645, 738, self.player, director),
                             Legionnaire(477, 891, self.player, director),
                             Legionnaire(645, 788, self.player, director),
                             Centurion(150, 288, self.player, director),
                             Centurion(1455, 288, self.player, director),
                             Centurion(1329, 1248, self.player, director)]) 

        self.door = Door(760, 575, 'door_sheet.png', -1, 'coordDoor.txt', [2], 'door_open.wav')     
        self.doorGroup = EntityGroup([])
        self.doorGroup.add(self.door)
        self.groups.append(self.doorGroup)

        self.bg = load_image("map_caesar_a_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image(
            "map_caesar_a_bg.png", Constants.BG_MAP_DIR)

        load_music("level_one.it")
        pygame.mixer.music.set_volume(1)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("wpns2.png", -1, pygame.Rect(344, 342, 28, 28), "blade_swing.wav", 0.5), \
                          WpnBow("items-1.png", None, pygame.Rect(0, 24, 24, 24))])

    def processEvent(self, event):
        if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
            nextLevel = LevelTwo(self.director, self.player)
            self.director.setScene(nextLevel)
        if event.type == pygame.KEYDOWN and event.key == pygame.K_F1:
            self.door.setActive(True)
            # nextLevel = LevelOneB(self.director, self.player)
            # self.director.setScene(nextLevel)

        Level.processEvent(self, event)
    
    def update(self, time):
        Level.update(self, time)
        if not self.door.active and self.dead_sub_boss == 3:
            #When all Centurions are dead we open the door
            self.door.setActive(True)
        if len(pygame.sprite.spritecollide(self.player,self.doorGroup,False)) == 1: 
            if self.door.active == False:
                m = MessageScene(self.director, self, 'Warning', 'You shall not pass!', 'Press to continue')
                self.director.setScene(m)
                self.player.rect.y+=25
            if self.door.active == True:
                nextLevel = LevelOneB(self.director, self.player)
                self.director.setScene(nextLevel)    
示例#3
0
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 224
        self.player.rect.y = 1273

        self.laser0 = Laser(80, 340, 'laser_45.png')
        self.laser1 = Laser(400, 75, 'laser_45.png')
        self.laser2 = Laser(405, 332, 'laser_180.png')
        self.laser3 = Laser(80, 330, 'laser_180.png')
        self.laser4 = Laser(406, 341, 'laser_125.png')
        self.laser5 = Laser(80, 80, 'laser_125.png')
        self.laser6 = Laser(400, 350, 'laser_90.png')
        self.laserArray = [
            self.laser0, self.laser1, self.laser2, self.laser3, self.laser4,
            self.laser5, self.laser6
        ]
        self.laserGroup = EntityGroup([])
        self.laserGroup.add(self.laser0, self.laser1, self.laser2, self.laser3,
                            self.laser4, self.laser5, self.laser6)
        self.groups.append(self.laserGroup)
        self.laser0.active = False
        self.laser1.active = False
        self.activeLG = 1  # Pair of lasers active at a given time
        self.time = 0

        self.page = Page(408, 135, self.player, director)
        self.enemyGroup.add([
            FutureSoldier(141, 1084, self.player, director),
            #                              FutureSoldier(316, 1084, self.player, director),
            #                              FutureSoldier(141, 926, self.player, director),
            FutureSoldier(316, 926, self.player, director),
            FutureSoldier(686, 1260, self.player, director),
            FutureSoldier(508, 988, self.player, director),
            FutureSoldier(537, 1450, self.player, director),
            self.page
        ])

        self.bg = load_image("map_page_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image("map_page_bg.png", Constants.BG_MAP_DIR)

        self.invisibleFloor = InvisibleFloor(
            384, 202, 59, 78)  # Invisible sprite, it functions as a trigger
        self.invisibleFloorG = EntityGroup([])
        self.invisibleFloorG.add(self.invisibleFloor)
        self.groups.append(self.invisibleFloorG)

        load_music("level_four.s3m")
        pygame.mixer.music.set_volume(0.5)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("lightsaber.png", -1, pygame.Rect(128, 77, 42, 42), "sthswng1.wav", 0.2), \
                          WpnLaser()])
示例#4
0
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 224
        self.player.rect.y = 1273
        
        self.laser0 = Laser(80, 340, 'laser_45.png')
        self.laser1 = Laser(400, 75, 'laser_45.png')
        self.laser2 = Laser(405, 332, 'laser_180.png')
        self.laser3 = Laser(80, 330, 'laser_180.png')
        self.laser4 = Laser(406, 341, 'laser_125.png')      
        self.laser5 = Laser(80, 80, 'laser_125.png')
        self.laser6 = Laser(400, 350, 'laser_90.png')
        self.laserArray = [self.laser0, self.laser1, self.laser2, self.laser3, self.laser4, self.laser5, self.laser6]
        self.laserGroup = EntityGroup([])
        self.laserGroup.add(self.laser0, self.laser1, self.laser2,self.laser3, self.laser4, self.laser5, self.laser6)
        self.groups.append(self.laserGroup)
        self.laser0.active = False
        self.laser1.active = False
        self.activeLG = 1       #Pair of lasers active at a given time
        self.time = 0
        
        self.page = Page(408, 135, self.player, director)
        self.enemyGroup.add([FutureSoldier(141, 1084, self.player, director),
                             FutureSoldier(316, 1084, self.player, director),
                             FutureSoldier(141, 926, self.player, director),
                             FutureSoldier(316, 926, self.player, director),
                             FutureSoldier(686, 1260, self.player, director),
                             FutureSoldier(508, 988, self.player, director),
                             FutureSoldier(537, 1450, self.player, director),
                             self.page])                             

        self.bg = load_image("map_page_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image("map_page_bg.png", Constants.BG_MAP_DIR)
        
        self.invisibleFloor = InvisibleFloor(384,202,59,78)     #Invisible sprite, it functions as a trigger 
        self.invisibleFloorG = EntityGroup([])
        self.invisibleFloorG.add(self.invisibleFloor)
        self.groups.append(self.invisibleFloorG)
        
        load_music("level_four.s3m")
        pygame.mixer.music.set_volume(0.5)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("lightsaber.png", -1, pygame.Rect(128, 77, 42, 42), "sthswng1.wav", 0.2), \
                          WpnLaser()])
示例#5
0
文件: Level.py 项目: hmourit/Aleph
    def __init__(self, director, player):
        Scene.__init__(self, director)
        self.player = player
        self.enemyGroup = EntityGroup([])
        self.bulletGroup = EntityGroup([])
        self.groups = []
        self.groups.append(self.enemyGroup)
        self.groups.append(self.bulletGroup)

        self.bg = None
        self.collisionBg = None
        self.camera = Camera()

        self.HUD = HUD(self.director, (0, 467), True, player)
        hudLayer = Layer(self.director)
        hudLayer.append(self.HUD)
        self.layers.append(hudLayer)
        self.mouseHoveringHUD = False

        self.danger = False
        self.dangerLevel = 0

        self.gameOver = False
示例#6
0
class LevelFour(Level):
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 224
        self.player.rect.y = 1273

        self.laser0 = Laser(80, 340, 'laser_45.png')
        self.laser1 = Laser(400, 75, 'laser_45.png')
        self.laser2 = Laser(405, 332, 'laser_180.png')
        self.laser3 = Laser(80, 330, 'laser_180.png')
        self.laser4 = Laser(406, 341, 'laser_125.png')
        self.laser5 = Laser(80, 80, 'laser_125.png')
        self.laser6 = Laser(400, 350, 'laser_90.png')
        self.laserArray = [
            self.laser0, self.laser1, self.laser2, self.laser3, self.laser4,
            self.laser5, self.laser6
        ]
        self.laserGroup = EntityGroup([])
        self.laserGroup.add(self.laser0, self.laser1, self.laser2, self.laser3,
                            self.laser4, self.laser5, self.laser6)
        self.groups.append(self.laserGroup)
        self.laser0.active = False
        self.laser1.active = False
        self.activeLG = 1  # Pair of lasers active at a given time
        self.time = 0

        self.page = Page(408, 135, self.player, director)
        self.enemyGroup.add([
            FutureSoldier(141, 1084, self.player, director),
            #                              FutureSoldier(316, 1084, self.player, director),
            #                              FutureSoldier(141, 926, self.player, director),
            FutureSoldier(316, 926, self.player, director),
            FutureSoldier(686, 1260, self.player, director),
            FutureSoldier(508, 988, self.player, director),
            FutureSoldier(537, 1450, self.player, director),
            self.page
        ])

        self.bg = load_image("map_page_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image("map_page_bg.png", Constants.BG_MAP_DIR)

        self.invisibleFloor = InvisibleFloor(
            384, 202, 59, 78)  # Invisible sprite, it functions as a trigger
        self.invisibleFloorG = EntityGroup([])
        self.invisibleFloorG.add(self.invisibleFloor)
        self.groups.append(self.invisibleFloorG)

        load_music("level_four.s3m")
        pygame.mixer.music.set_volume(0.5)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("lightsaber.png", -1, pygame.Rect(128, 77, 42, 42), "sthswng1.wav", 0.2), \
                          WpnLaser()])

    def change_lasers(self):
        # Changes activeLG
        # laser0 and laser1 -> activeLG = 1
        # laser2 and laser3 -> activeLG = 3
        # laser4 and laser5 -> activeLG = 5
        # laser6 -> activeLG = 6
        self.laserArray[self.activeLG - 1].active = True
        self.laserArray[self.activeLG].active = True
        if self.activeLG == 5:
            self.laserArray[self.activeLG + 1].active = False
            self.activeLG = 6
        elif self.activeLG == 6:
            self.laserArray[0].active = False
            self.laserArray[1].active = False
            self.activeLG = 1
        else:
            self.laserArray[self.activeLG + 1].active = False
            self.laserArray[self.activeLG + 2].active = False
            self.activeLG += 2

    def disconnect_lasers(self):
        for laser in self.laserArray:
            laser.active = False
        self.activeLG = 0

    def update(self, time):
        Level.update(self, time)
        self.time += time
        if self.activeLG != 0 and self.time > 1000:
            self.change_lasers()
            self.time = 0
        laser = pygame.sprite.spritecollideany(self.player, self.laserGroup,
                                               pygame.sprite.collide_mask)
        if laser != None and laser.active:
            self.player.hp = 0
        if len(
                pygame.sprite.spritecollide(self.player, self.invisibleFloorG,
                                            True,
                                            pygame.sprite.collide_rect)) == 1:
            print 'Floor'
            self.disconnect_lasers()
            self.page.rect.x = 414
            self.page.rect.y = 414

    def processEvent(self, event):
        if event.type == pygame.USEREVENT and event.code == PAGEDEAD:
            m = MessageScene(
                self.director, self, 'Congratulations',
                "You have completed the game!\nNow you're entitled \nto the 3D version.",
                "Press to quit")
            m.messageBox.button.onMouseDown = lambda: pygame.event.post(
                pygame.event.Event(pygame.QUIT))
            self.director.setScene(m)

        Level.processEvent(self, event)
示例#7
0
class LevelFour(Level):
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 224
        self.player.rect.y = 1273
        
        self.laser0 = Laser(80, 340, 'laser_45.png')
        self.laser1 = Laser(400, 75, 'laser_45.png')
        self.laser2 = Laser(405, 332, 'laser_180.png')
        self.laser3 = Laser(80, 330, 'laser_180.png')
        self.laser4 = Laser(406, 341, 'laser_125.png')      
        self.laser5 = Laser(80, 80, 'laser_125.png')
        self.laser6 = Laser(400, 350, 'laser_90.png')
        self.laserArray = [self.laser0, self.laser1, self.laser2, self.laser3, self.laser4, self.laser5, self.laser6]
        self.laserGroup = EntityGroup([])
        self.laserGroup.add(self.laser0, self.laser1, self.laser2,self.laser3, self.laser4, self.laser5, self.laser6)
        self.groups.append(self.laserGroup)
        self.laser0.active = False
        self.laser1.active = False
        self.activeLG = 1       #Pair of lasers active at a given time
        self.time = 0
        
        self.page = Page(408, 135, self.player, director)
        self.enemyGroup.add([FutureSoldier(141, 1084, self.player, director),
                             FutureSoldier(316, 1084, self.player, director),
                             FutureSoldier(141, 926, self.player, director),
                             FutureSoldier(316, 926, self.player, director),
                             FutureSoldier(686, 1260, self.player, director),
                             FutureSoldier(508, 988, self.player, director),
                             FutureSoldier(537, 1450, self.player, director),
                             self.page])                             

        self.bg = load_image("map_page_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image("map_page_bg.png", Constants.BG_MAP_DIR)
        
        self.invisibleFloor = InvisibleFloor(384,202,59,78)     #Invisible sprite, it functions as a trigger 
        self.invisibleFloorG = EntityGroup([])
        self.invisibleFloorG.add(self.invisibleFloor)
        self.groups.append(self.invisibleFloorG)
        
        load_music("level_four.s3m")
        pygame.mixer.music.set_volume(0.5)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("lightsaber.png", -1, pygame.Rect(128, 77, 42, 42), "sthswng1.wav", 0.2), \
                          WpnLaser()])
        
    def change_lasers(self):  
        #Changes activeLG
        #laser0 and laser1 -> activeLG = 1
        #laser2 and laser3 -> activeLG = 3
        #laser4 and laser5 -> activeLG = 5
        #laser6 -> activeLG = 6
        self.laserArray[self.activeLG-1].active = True
        self.laserArray[self.activeLG].active = True      
        if self.activeLG ==5:
            self.laserArray[self.activeLG+1].active = False
            self.activeLG = 6
        elif self.activeLG == 6:
            self.laserArray[0].active = False
            self.laserArray[1].active = False
            self.activeLG = 1
        else:   
            self.laserArray[self.activeLG+1].active = False
            self.laserArray[self.activeLG+2].active = False
            self.activeLG += 2       
        
    def disconnect_lasers(self):
        for laser in self.laserArray:
            laser.active = False
        self.activeLG = 0
                          
                          
    def update(self, time):
        Level.update(self, time)
        self.time +=time
        if self.activeLG != 0 and self.time > 1000:
            self.change_lasers()
            self.time = 0
        laser = pygame.sprite.spritecollideany(self.player, self.laserGroup, pygame.sprite.collide_mask)
        if laser != None and laser.active:
            self.player.hp = 0                    
        if len(pygame.sprite.spritecollide(self.player,self.invisibleFloorG,True,pygame.sprite.collide_rect)) == 1: 
            print 'Floor'
            self.disconnect_lasers()
            self.page.rect.x = 414
            self.page.rect.y = 414