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))])
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)
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 __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 __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
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)
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