def initialize(self): print(f"Initializing the '{self.sceneName}' level...") # Loading resources (images, audio, etc.) before beginning scene Player.image = load_image("player.gif") Player.shootSound = load_sound("laser.ogg") Laser.image = load_image("laser.gif") Enemy.image = load_image("spider.gif") self.background = load_image("background2.gif").convert() # Initialize sprite group self.lasers = pygame.sprite.Group() self.aliens = pygame.sprite.Group() self.all = pygame.sprite.RenderUpdates() # Assign groups to sprites Laser.containers = self.lasers, self.all Enemy.containers = self.aliens, self.all Player.containers = self.all Score.containers = self.all Lives.containers = self.all self.player = Player() self.score = Score() self.lives = Lives(self.player.lives) self.all.add(self.score) self.all.add(self.lives) self.generate_enemies()
def setupPlayground(self): # libavg setup self.display = avg.DivNode(parent=self._parentNode, size=self._parentNode.size) self.renderer = Renderer() background = avg.ImageNode(parent=self.display) background.setBitmap(self.backgroundpic) self.display.player = None (displayWidth, displayHeight) = self.display.size widthThird = (int)(displayWidth / 3) fieldSize = (widthThird, displayHeight) self.field1 = avg.DivNode(parent=self.display, size=fieldSize) self.field2 = avg.DivNode(parent=self.display, size=fieldSize, pos=(displayWidth - widthThird, 0)) avg.LineNode(parent=self.display, pos1=(0, 1), pos2=(displayWidth, 1)) avg.LineNode(parent=self.display, pos1=(0, displayHeight), pos2=(displayWidth, displayHeight)) self.lines.createImageNode('layer1', dict(parent=self.display, pos=(widthThird, 0)), (2, displayHeight)) self.lines.createImageNode('layer1', dict(parent=self.display, pos=(displayWidth - widthThird, 0)), (2, displayHeight)) # pybox2d setup self.world = b2World(gravity=(0, 0), doSleep=True) self.hitset = set() self.listener = ContactListener(self.hitset) self.world.contactListener = self.listener self.running = True pointsToWin = 999 if self.tutorialMode else config.pointsToWin self.leftPlayer, self.rightPlayer = Player(self, self.field1, pointsToWin), Player(self, self.field2, pointsToWin) self.leftPlayer.other, self.rightPlayer.other = self.rightPlayer, self.leftPlayer # horizontal lines BorderLine(self.world, a2w((0, 1)), a2w((displayWidth, 1)), 1, False, 'redball') BorderLine(self.world, a2w((0, displayHeight)), a2w((displayWidth, displayHeight)), 1, False, 'redball') # vertical ghost lines maxWallHeight = brickSize * brickLines * PPM BorderLine(self.world, a2w((maxWallHeight, 0)), a2w((maxWallHeight, displayHeight)), 1, False, 'redball', 'ball') BorderLine(self.world, a2w((displayWidth - maxWallHeight - 1, 0)), a2w((displayWidth - maxWallHeight - 1, displayHeight)), 1, False, 'redball', 'ball') self.middleX, self.middleY = self.display.size / 2 self.middle = a2w((self.middleX, self.middleY)) BatManager(self.field1, self.world, self.renderer) BatManager(self.field2, self.world, self.renderer) self.bonus = None self.balls = [] self.redballs = [] self.towers = [] self.ghosts = [] self.mainLoop = g_player.setOnFrameHandler(self.step)